sp-hydra-veil-core/core/controllers/ClientController.py
2024-09-11 19:39:33 +02:00

48 lines
1.9 KiB
Python

from core.Constants import Constants
from core.controllers.ApplicationController import ApplicationController
from core.controllers.ApplicationVersionController import ApplicationVersionController
from core.controllers.ClientVersionController import ClientVersionController
from core.controllers.ConfigurationController import ConfigurationController
from core.controllers.LocationController import LocationController
from core.controllers.SubscriptionPlanController import SubscriptionPlanController
from core.observers import ClientObserver
from core.observers.ConnectionObserver import ConnectionObserver
from os import path
from typing import Optional
class ClientController:
@staticmethod
def get_working_directory():
import main
return str(path.dirname(path.abspath(main.__file__)))
@staticmethod
def get_version():
return ClientVersionController.get(Constants.CLIENT_VERSION)
@staticmethod
def can_be_updated():
return not ClientVersionController.is_latest(ClientController.get_version())
@staticmethod
def sync(client_observer: ClientObserver = None, connection_observer: ConnectionObserver = None):
from core.controllers.ConnectionController import ConnectionController
ConnectionController.with_preferred_connection(task=ClientController._sync, client_observer=client_observer, connection_observer=connection_observer)
@staticmethod
def _sync(client_observer: Optional[ClientObserver] = None, proxies: Optional[dict] = None):
if client_observer is not None:
client_observer.notify('synchronizing')
ApplicationController.fetch(proxies)
ApplicationVersionController.fetch(proxies)
ClientVersionController.fetch(proxies)
LocationController.fetch(proxies)
SubscriptionPlanController.fetch(proxies)
ConfigurationController.update_last_synced_at()