Compare commits

..

No commits in common. "bbaec35a5f21af56612224bf96df9bcf7c36691d" and "d8239f1c34b42d1e33497173d9c39093b08b1c09" have entirely different histories.

6 changed files with 10 additions and 30 deletions

View File

@ -12,7 +12,6 @@ from typing import Any
from dzgui.api.steam import find_user_id_32
from dzgui.const.constants import APP_NAME, APP_NAME_LOWER, IMAGES_PATH
from dzgui.util.dirs import copy_dzgui_to_xdg_data
from dzgui.util.strings import unknown
logger = logging.getLogger(APP_NAME)
@ -47,13 +46,6 @@ class Shortcuts:
wrapped_exe = f'"{exe}"'
return appname + wrapped_exe
def find_appname_by_unsigned_id(self, appid: int) -> str:
# NOTE: bitmask signed int back to 32-bit CRC
for key in self.shortcuts["shortcuts"].keys():
if self.shortcuts["shortcuts"][key]["appid"] & 0xFFFFFFFF == appid:
return str(self.shortcuts["shortcuts"][key]["appname"])
return unknown
def get_shortcuts(self) -> Any:
return self.shortcuts

View File

@ -32,25 +32,23 @@ from dzgui.const.endpoints import (
)
from dzgui.strings import wizard
from dzgui.util.bash import concat_bash_args
from dzgui.util.strings import unknown
logger = logging.getLogger(APP_NAME)
class AppNotInstalledError(Exception):
"""App not present in user's libraryfolders"""
pass
class AppMovedError(Exception):
"""VDF points to a nonexistent location on disk"""
pass
class VDFLoadError(Exception):
"""Malformed VDF or JSON conversion"""
pass
@ -324,12 +322,9 @@ def get_running_app() -> int | None:
def get_app_allows_downloads(path: Path, appid: int) -> bool:
try:
root_path = get_app_path(path, appid)
acf = root_path.joinpath(f"steamapps/appmanifest_{appid}.acf")
flag = ACF(acf).get_allows_downloads()
except AppNotInstalledError:
flag = 0
match flag:
# NOTE: adheres to global client setting
case 0:
@ -408,13 +403,13 @@ def get_app_path(folders_path: Path, appid: int) -> Path:
return Path(app_path)
def get_app_name(appid: int) -> str | None:
def get_app_name(appid: int) -> str:
payload = {"appids": [appid]}
res = requests.get(APP_DETAILS, params=payload)
if res.status_code != 200:
return None
return unknown
try:
return str(res.json()[str(appid)]["data"]["name"])
except Exception as e:
logger.debug(e)
return None
return unknown

View File

@ -9,7 +9,6 @@ from typing import TYPE_CHECKING
import dzgui.api.pefile as PeFile
import dzgui.api.servers as Servers
from dzgui.api.shortcuts import Shortcuts
from dzgui.api.steam import (
connect,
@ -176,12 +175,6 @@ class ConnectionManager:
if running_app is not None:
allows_dl = get_app_allows_downloads(steam_path, running_app)
running_app_name = get_app_name(running_app)
# NOTE: for out-of-range appid, assume NSG.
# dzgui.api.steam.get_app_name() will return None
if running_app_name is None:
s = Shortcuts(steam_path)
# NOTE: returns "Unknown" if unparseable
running_app_name = s.find_appname_by_unsigned_id(running_app)
allows_downloads = (allows_dl, running_app_name)
else:
allows_downloads = (True, "")

View File

@ -273,7 +273,7 @@ class PreConnectionAssistant(Gtk.Box):
)
allows_dl, running_app = prereqs.allows_downloads
if len(prereqs.mods) > 0 and allows_dl is False:
if allows_dl is False:
msg = (
f"The game '{running_app}' is currently running in Steam, but background downloads are not enabled.\n"
"Either stop the game first, or update your global Steam settings or the game's local settings.\n"

View File

@ -4,7 +4,7 @@ description = "DayZ server browser and mod manager for Linux"
authors = [
{name = "aclist"}
]
version = "7.0.0b17"
version = "7.0.0b16"
license = "GPL-3.0-or-later"
license-files = ["LICENSE"]
readme = "README.md"

View File

@ -12,7 +12,7 @@ from dzgui.api.steam import (
from dzgui.config.query import get_config
from dzgui.config.xdg import get_xdg_paths, parse_filepaths
from dzgui.const.constants import APPID_DAYZ
from dzgui.const.constants import APPID_DAYZ, LIBRARYFOLDERS_PATH
from tests.fixtures import fixture_path