diff --git a/Makefile b/Makefile index e686466..96821d1 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ SOURCES := source INCLUDES := source # Bei jedem Release erhöhen - das Auto-Update vergleicht diese Nummer -VERSION := 3.1.0 +VERSION := 3.1.1 APP_TITLE := MBMNET APP_DESCRIPTION := Dein eigenes 3DS-Netzwerk diff --git a/source/admin.c b/source/admin.c index a801f1a..c8bb55d 100644 --- a/source/admin.c +++ b/source/admin.c @@ -49,9 +49,13 @@ static void check_once(void) if (!slot) ACT_GetCommonInfo(&slot, sizeof(slot), INFO_TYPE_COMMON_DEFAULT_ACCOUNT_SLOT); static AccountAccessToken at; // 1. direkt lesen; 2. sonst Konto laden (falls nach dem Umschalten nicht geladen); 3. sonst einloggen + // Fortschritt in "why": SELECT zeigt, bei welchem Schritt es gerade ist (oder hängt) + snprintf(why, sizeof(why), "Werkzeuge: Schritt 1/4 - Anmeldung lesen (Platz %u) ...", slot); Result r1 = read_token(slot, &at), r2 = 0, r3 = 0, r4 = 0; if (R_FAILED(r1) || !at.refreshToken[0]) { + snprintf(why, sizeof(why), "Werkzeuge: Schritt 2/4 - Konto laden ...\n(Lesen: %08lX)", (unsigned long)r1); r2 = ACTA_LoadConsoleAccount(slot, false, NULL, false, false); + snprintf(why, sizeof(why), "Werkzeuge: Schritt 3/4 - Konto einloggen ...\n(Lesen %08lX, Laden %08lX)", (unsigned long)r1, (unsigned long)r2); r3 = login(slot); r4 = read_token(slot, &at); } @@ -65,6 +69,7 @@ static void check_once(void) snprintf(tokens, sizeof(tokens), "%s %s", at.accessToken[0] ? at.accessToken : "-", at.refreshToken); memset(&at, 0, sizeof(at)); + snprintf(why, sizeof(why), "Werkzeuge: Schritt 4/4 - Server fragen (HTTPS) ..."); // Vom Server prüfen lassen (nur HTTPS, MBMNET-CA) char body[32]; u32 len = 0; @@ -80,6 +85,10 @@ static void check_once(void) const char *admin_why(void) { return why; } +void admin_progress(const char *step) { if (wanted && !isAdmin) snprintf(why, sizeof(why), "Werkzeuge: warte auf %s ...", step); } + +void admin_skipped(void) { if (wanted && !isAdmin) snprintf(why, sizeof(why), "Werkzeuge: Prüfung ausgefallen (umgeschaltet). App neu öffnen."); } + void admin_prepare(const char *srv, bool mbmnetLoggedIn) { isAdmin = false; diff --git a/source/admin.h b/source/admin.h index 258d47f..2ea7b0f 100644 --- a/source/admin.h +++ b/source/admin.h @@ -7,6 +7,10 @@ void admin_prepare(const char *server, bool mbmnetLoggedIn); // Die eigentliche Prüfung (blockiert, im Hintergrund-Thread aufrufen, nicht gleichzeitig mit anderen act-Anfragen) void admin_check(void); +// Prüfung fiel aus (es wurde umgeschaltet) +void admin_skipped(void); +// Was das Auffrischen gerade macht (vor der Prüfung), für die Anzeige bei SELECT +void admin_progress(const char *step); // Admin? Nur nach Bestätigung durch den Server in dieser Sitzung. bool admin_is(void); // Warum es (noch) keine Werkzeuge gibt (leer = Admin) diff --git a/source/main.c b/source/main.c index 2a4ef84..d7eeaa8 100644 --- a/source/main.c +++ b/source/main.c @@ -347,12 +347,15 @@ static void maintenance_worker(void *arg) char ignore[96]; // 1. Patches auffrischen (Miiverse-CA aus dem Zwischenspeicher; nur beim allerersten Mal vom Server) bool hadCa = olvpatch_ca_cached(); + admin_progress("Patches"); refresh_patches(); + admin_progress("SpotPass"); // 2. SpotPass-Aufgabe anmelden if (begin_busy()) { spotpass_register(MBMNET_SERVER, ignore, sizeof(ignore)); maintenanceBusy = false; } + admin_progress("Konto-Abgleich"); // 3. Konto mit dem MBMNET-Server abgleichen (holt u. a. den Mii von der Webseite). Höchstens 5 s, // bei einem Umschalt-Wunsch sofort abbrechen. u8 slot = frdswitch_slot_of(FRIEND_ACCOUNT_MBMNET); @@ -372,6 +375,7 @@ static void maintenance_worker(void *arg) // 3b. Admin? (braucht act - deshalb erst nach dem Konto-Abgleich, nie gleichzeitig). Hält das Umschalten // nicht auf: Tippt man vorher, fällt die Prüfung aus (nach dem Neustart gibt es eine neue). if (!switchRequested) admin_check(); + else admin_skipped(); // 4. Miiverse-CA frisch vom Server (nur Netz; Patches nur neu bauen, wenn sie sich geändert hat) bool caChanged = false; if (!switchRequested && olvpatch_refresh_ca(MBMNET_SERVER, &caChanged) && caChanged && hadCa)