fix: separate id/ip methods

This commit is contained in:
aclist 2026-02-24 20:30:38 +09:00
parent f424b019ad
commit f86e37dbe1
5 changed files with 43 additions and 29 deletions

View File

@ -460,18 +460,22 @@ def response_to_fq_ip(res: dict) -> str:
return f"{ip}:{gameport}:{qport}"
def query_id_or_ip(addr: str, key: str) -> Optional[dict]:
# NOTE: Battlemetrics
if addr.isdigit():
try:
resolved = map_id_to_record(key, addr)
res = query_direct(resolved.ip, resolved.qport)
except Exception as e:
logger.critical(e)
return None
else:
# NOTE: Battlemetrics
def query_by_id(addr: str, key: str) -> Optional[dict]:
try:
resolved = map_id_to_record(key, addr)
res = query_direct(resolved.ip, resolved.qport)
except Exception as e:
logger.critical(e)
return None
def query_by_ip(addr: str) -> Optional[dict]:
try:
record = addr.split(":")
# TODO: create a Record object
ip, qport = record[0], record[2]
res = query_direct(ip, int(qport))
except Exception as e:
logger.critical(e)
return None
return res

View File

@ -22,9 +22,8 @@ class ConnectionManager:
self.thread_man = ThreadingManager(parent=controller)
@call_on_thread(dialog.querying)
def connect_by_id_or_ip(self, addr: str, key: str) -> None:
res = Servers.query_id_or_ip(addr, key)
print(res)
def connect_by_ip(self, addr: str) -> None:
res = Servers.query_by_ip(addr)
if res is None:
self.thread_man.set_cleanup_func(StoredFunc(self._connection_failure))
# TODO: add to history if successful

View File

@ -59,20 +59,15 @@ class ContextMenuManager:
self.controller.set_fav()
# THREADED
case ContextMenu.ADD_SERVER:
record = self.treeview.get_record_string()
ServerModelManager(self.controller, self.treeview).add_by_ip(record)
# TODO: update tab with !
case ContextMenu.CONNECT:
record = self.treeview.get_record_string()
# FIXME: context menu connections do not require BM key
key = self.controller.get_config_man().lookup(Preferences.BM)
ConnectionManager(self.controller).connect_by_id_or_ip(record, key)
case ContextMenu.ADD_SERVER:
record = self.treeview.get_record_string()
ServerModelManager(self.controller, self.treeview).add_by_id_or_ip(
record
)
# add to saved servers model verbatim and sort in place
# update tab with !
# update config file with IP
pass
ConnectionManager(self.controller).connect_ip(record, key)
case ContextMenu.REFRESH_PLAYERS:
# get record
# call a2s on thread

View File

@ -187,8 +187,19 @@ class ServerModelManager:
self._push_data(parsed)
@call_on_thread(dialog.querying)
def add_by_id_or_ip(self, addr: str) -> None:
res = Servers.query_id_or_ip(addr)
def add_by_id(self, addr: str) -> None:
# KEY
config_man = self.controller.get_config_man()
key = config_man.lookup(Preferences.BM)
res = Servers.query_by_id(addr, key)
self.parse_single_record(res)
@call_on_thread(dialog.querying)
def add_by_ip(self, addr: str) -> None:
res = Servers.query_by_ip(addr)
self.parse_single_record(res)
def parse_single_record(self, record: dict) -> None:
if res is None:
self.thread_man.set_cleanup_func(StoredFunc(self._cleanup_on_failure))
return

View File

@ -123,7 +123,9 @@ class FavPanel(Gtk.Frame):
emitter = self.controller.get_emitter()
emitter.connect("fav_server_changed", self._on_fav_server_changed)
self.server_name, self.server_ip = self.controller.get_config_man().get_favorite() #self.controller.get_favorite()
self.server_name, self.server_ip = (
self.controller.get_config_man().get_favorite()
) # self.controller.get_favorite()
server_name = (
f"{self.server_name} ({self.server_ip})"
if self.server_name is not None
@ -206,10 +208,13 @@ class AddPanel(Gtk.Frame):
ConnectionManager(self.controller).connect_by_id_or_ip(text)
def _submit_query(self) -> None:
text = self.entry.get_text()
addr = self.entry.get_text()
# TODO: grabs ServerTab.SAVED ServerTreeView
saved = self.controller.get_servers().get_saved()
ServerModelManager(self.controller, saved)._add_by_id_or_ip(text)
tree = self.controller.get_servers().get_saved()
if addr.isdigit():
ServerModelManager(self.controller, tree).add_by_id(addr)
else:
ServerModelManager(self.controller, tree).add_by_ip(addr)
def _on_activate(self, entry: Gtk.Entry) -> None:
if not self.add_server.is_sensitive():