diff --git a/core/controllers/SyncController.py b/core/controllers/SyncController.py index b10e71e..2876877 100644 --- a/core/controllers/SyncController.py +++ b/core/controllers/SyncController.py @@ -1,3 +1,4 @@ +from core.observers.Notifications import Notifications, EventType from core.services.sync import legacy_insert from core.models.manage.session_management import init_session, close_session from core.services.sync.sync_service import coordinate_cache_sync, save_metadata @@ -83,7 +84,8 @@ def new_sync(client_observer: ClientObserver, connection_observer: ConnectionObs # Outright Error: if not metadata_result["success"]: error_msg = metadata_result["error"] - client_observer.notify('synchronizing', f'Error! {error_msg}') + # client_observer.notify('synchronizing', f'Error! {error_msg}') + Notifications.emit(EventType.STATUS_UPDATE, f'Error! {error_msg}') return Result(valid=False) # Nothing changed if the 'changed_tables' variable does NOT exist @@ -104,9 +106,13 @@ def new_sync(client_observer: ClientObserver, connection_observer: ConnectionObs # CHECK ON CHANGED TABLES if not changed_tables: client_observer.notify('synchronized') + notification = "Sync Complete. (already up to date)" + Notifications.emit(EventType.STATUS_UPDATE, notification) return Result(valid=True) # We only make it past this point if there's New Data + notification = "Fetching Data.." + Notifications.emit(EventType.STATUS_UPDATE, notification) #################################### # API CALLS: GET NEW DATA IN BULK @@ -120,7 +126,9 @@ def new_sync(client_observer: ClientObserver, connection_observer: ConnectionObs if not results.valid: error_msg = f"Sync failed! {results.error_type}" logger.error(f"{error_msg} {results.message}") - client_observer.notify('synchronizing', f'Error! {error_msg}') + notification = f'Error! {error_msg}' + # client_observer.notify('synchronizing', notification) + Notifications.emit(EventType.STATUS_UPDATE, notification) return Result(valid=False) quantity_of_entries = len(results.data) @@ -149,7 +157,9 @@ def new_sync(client_observer: ClientObserver, connection_observer: ConnectionObs if each_insert.valid: logger.info(f"Success with insert of {key}") - client_observer.notify('synchronizing', f'Inserted {key}') + notification = f'Inserted {key}' + Notifications.emit(EventType.STATUS_UPDATE, notification) + # client_observer.notify('synchronizing', f'Inserted {key}') continue else: skipped.append(key) @@ -171,7 +181,9 @@ def new_sync(client_observer: ClientObserver, connection_observer: ConnectionObs client_observer.notify('synchronized', "Fetch & Save Complete!") save_successful = save_metadata(filtered_metadata) if save_successful: - return Result(valid=True, message="Finshed sync.") + notification = "Finshed sync." + Notifications.emit(EventType.STATUS_UPDATE, notification) + return Result(valid=True, message=notification) else: error_msg = "Finshed sync, but had issues with the saving of metadata for next time." logger.error(error_msg) @@ -179,13 +191,15 @@ def new_sync(client_observer: ClientObserver, connection_observer: ConnectionObs elif total_skipped < quantity_of_entries: error_msg = f"Partial Success. {total_skipped} skipped." - client_observer.notify('synchronized', error_msg) + # client_observer.notify('synchronized', error_msg) + Notifications.emit(EventType.STATUS_UPDATE, error_msg) return Result(valid=True, data=skipped, message=error_msg) else: error_msg = f"Sync Failed. All {total_skipped} entries were skipped!" - client_observer.notify('synchronized', error_msg) - return Result(valid=False, data=skipped, message="Complete Failure, all data failed to insert.") + # client_observer.notify('synchronized', error_msg) + Notifications.emit(EventType.STATUS_UPDATE, error_msg) + return Result(valid=False, data=skipped, message=error_msg) def insert_data( diff --git a/core/errors/translate_error.py b/core/errors/translate_error.py index 099ae0a..a51f3cc 100644 --- a/core/errors/translate_error.py +++ b/core/errors/translate_error.py @@ -88,7 +88,7 @@ def get_traceback_line(error) -> ErrorStack: func_name, line_no, file_name = "Unknown", "Unknown", "Unknown" # Generate the user-facing message and the full formatted stacktrace - error_msg = f"Error in {func_name} at {file_name}:{line_no} -> {str(error)}" + error_msg = f"Error in function {func_name} in file {file_name} on line {line_no}. That error is: {str(error)}" full_trace = "".join(traceback.format_exception(type(error), error, tb)) logger.error(error_msg) diff --git a/core/services/networking/systemwide/systemwide_wireguard.py b/core/services/networking/systemwide/systemwide_wireguard.py index 4503a6a..dc66a84 100644 --- a/core/services/networking/systemwide/systemwide_wireguard.py +++ b/core/services/networking/systemwide/systemwide_wireguard.py @@ -124,7 +124,11 @@ def _cleanup_on_error(firewall_setting: bool, dns_setting: bool) -> None: pass -def _finish_function(final_result: Result) -> Result: +def _finish_success(final_result: Result, profile_id: int) -> Result: + Notifications.emit(EventType.SYSTEM_ENABLE, profile_id) + notification = "Connected." + Notifications.emit(EventType.STATUS_UPDATE, notification) + terminate_tor_connection() time.sleep(0.3) return final_result @@ -277,13 +281,9 @@ def __establish_system_connection( current_state.firewalled = firewall_tracker current_state.dns_set = did_dns_work SystemStateController.update_or_create(current_state) + notification = "DNS Set Did Not Work." + Notifications.emit(EventType.STATUS_UPDATE, notification) - if connection_observer: - connection_observer.notify("connected", "Confirmed") - - Notifications.emit(EventType.SYSTEM_ENABLE, profile.id) - notification = "Connected." - Notifications.emit(EventType.STATUS_UPDATE, notification) return Result(valid=True, data=current_state) @@ -331,7 +331,7 @@ def establish_system_connection( ) if connection_result.valid: - return _finish_function(connection_result) + return _finish_success(final_result=connection_result, profile_id=profile.id) # If not valid, we treat it as a failure to trigger the except block logic notification = f"{attempt} attempt failed.." diff --git a/core/services/using_tickets/use_ticket_orchestrator.py b/core/services/using_tickets/use_ticket_orchestrator.py index f143dc7..7c6c163 100644 --- a/core/services/using_tickets/use_ticket_orchestrator.py +++ b/core/services/using_tickets/use_ticket_orchestrator.py @@ -4,6 +4,7 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: from essentials.observers.ConnectionObserver import ConnectionObserver +from core.observers.Notifications import Notifications, EventType from core.services.subscriptions.subscriptions_by_protocol import save_billing_code from core.utils.get_raw_string import get_raw_string from core.observers.TicketObserver import TicketObserver @@ -39,6 +40,9 @@ def save_ticket_use( which_ticket: int ) -> Result: + notification = "Saving New Billing Code.." + Notifications.emit(EventType.STATUS_UPDATE, notification) + saved_for_profile = save_billing_code( profile_id=profile_id, billing_code=billing_code, @@ -58,9 +62,15 @@ def save_ticket_use( return saved_for_profile # result object if saved_ticket_tracker: + notification = "It Worked! Got Fresh Identity." + Notifications.emit(EventType.STATUS_UPDATE, notification) return Result(valid=True) else: - return Result(valid=False, error_type=ResultError.FILE_SYSTEM, message="Unable to update the ticket tracker that the ticket is used.") + notification = "File Error! Failed to Save New Billing Code" + Notifications.emit(EventType.STATUS_UPDATE, notification) + error_msg = f"Unable to update the ticket tracker with your new billing code of {billing_code}, and that the ticket is used." + logger.error(error_msg) + return Result(valid=False, error_type=ResultError.FILE_SYSTEM, message=error_msg) def make_payload(which_ticket: int, which_location: int, protocol_choice: ProtocolChoice) -> Result: @@ -111,6 +121,9 @@ def use_ticket_orchestrator( if None in PRE_REQS: return Result(valid=False, error_type=ResultError.MISSING_DATA, message="You are missing the profile data to use a ticket with.") + notification = f"Using Ticket {which_ticket} on {profile.name}" + Notifications.emit(EventType.STATUS_UPDATE, notification) + ################################### # FILTER TICKET DATA ###################################