- Created OfflineModeManager.smali (toggle offline mode) - Created OfflineResponseMock.smali (mock API responses) - Modified NetworkImpl to check offline mode - Modified MainActivity initialization - Builds successfully Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
193 lines
5.0 KiB
Smali
193 lines
5.0 KiB
Smali
.class public Lcom/firemint/realracing/OfflineModeManager;
|
|
.super Ljava/lang/Object;
|
|
.source "OfflineModeManager.java"
|
|
|
|
|
|
# static fields
|
|
.field private static final TAG:Ljava/lang/String; = "RR3_OfflineModeManager"
|
|
|
|
.field private static final PREF_NAME:Ljava/lang/String; = "rr3_offline_settings"
|
|
|
|
.field private static final KEY_OFFLINE_ENABLED:Ljava/lang/String; = "offline_mode_enabled"
|
|
|
|
.field private static isOfflineMode:Z = false
|
|
|
|
|
|
# direct methods
|
|
.method static constructor <clinit>()V
|
|
.locals 1
|
|
|
|
# Initialize offline mode to false by default
|
|
const/4 v0, 0x0
|
|
|
|
sput-boolean v0, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode:Z
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public constructor <init>()V
|
|
.locals 0
|
|
|
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public static init(Landroid/content/Context;)V
|
|
.locals 3
|
|
|
|
const-string v0, "RR3_OfflineModeManager"
|
|
|
|
const-string v1, "Initializing OfflineModeManager"
|
|
|
|
invoke-static {v0, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
# Load offline mode preference
|
|
const-string v1, "rr3_offline_settings"
|
|
|
|
const/4 v2, 0x0
|
|
|
|
invoke-virtual {p0, v1, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
|
|
|
|
move-result-object p0
|
|
|
|
const-string v1, "offline_mode_enabled"
|
|
|
|
invoke-interface {p0, v1, v2}, Landroid/content/SharedPreferences;->getBoolean(Ljava/lang/String;Z)Z
|
|
|
|
move-result p0
|
|
|
|
sput-boolean p0, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode:Z
|
|
|
|
if-eqz p0, :cond_0
|
|
|
|
const-string p0, "Offline mode is ENABLED"
|
|
|
|
invoke-static {v0, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
const-string p0, "Offline mode is DISABLED (online mode)"
|
|
|
|
invoke-static {v0, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
:goto_0
|
|
return-void
|
|
.end method
|
|
|
|
.method public static isOfflineMode()Z
|
|
.locals 1
|
|
|
|
# Return current offline mode status
|
|
sget-boolean v0, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode:Z
|
|
|
|
return v0
|
|
.end method
|
|
|
|
.method public static setOfflineMode(Landroid/content/Context;Z)V
|
|
.locals 3
|
|
|
|
const-string v0, "RR3_OfflineModeManager"
|
|
|
|
# Update in-memory flag
|
|
sput-boolean p1, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode:Z
|
|
|
|
# Save to SharedPreferences
|
|
const-string v1, "rr3_offline_settings"
|
|
|
|
const/4 v2, 0x0
|
|
|
|
invoke-virtual {p0, v1, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
|
|
|
|
move-result-object p0
|
|
|
|
invoke-interface {p0}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;
|
|
|
|
move-result-object p0
|
|
|
|
const-string v1, "offline_mode_enabled"
|
|
|
|
invoke-interface {p0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;
|
|
|
|
invoke-interface {p0}, Landroid/content/SharedPreferences$Editor;->apply()V
|
|
|
|
# Log the change
|
|
if-eqz p1, :cond_0
|
|
|
|
const-string p0, "Offline mode ENABLED"
|
|
|
|
invoke-static {v0, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
const-string p0, "Offline mode DISABLED (switched to online)"
|
|
|
|
invoke-static {v0, p0}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
:goto_0
|
|
return-void
|
|
.end method
|
|
|
|
.method public static shouldMockRequest(Ljava/lang/String;)Z
|
|
.locals 1
|
|
|
|
# Check if offline mode is enabled
|
|
sget-boolean v0, Lcom/firemint/realracing/OfflineModeManager;->isOfflineMode:Z
|
|
|
|
if-nez v0, :cond_0
|
|
|
|
# Online mode - don't mock
|
|
const/4 p0, 0x0
|
|
|
|
return p0
|
|
|
|
:cond_0
|
|
# Offline mode - check if URL should be mocked
|
|
if-nez p0, :cond_1
|
|
|
|
# Null URL - don't mock
|
|
const/4 p0, 0x0
|
|
|
|
return p0
|
|
|
|
:cond_1
|
|
# Mock all requests in offline mode
|
|
# In future, could filter specific URLs
|
|
const/4 p0, 0x1
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public static logRequest(Ljava/lang/String;Ljava/lang/String;)V
|
|
.locals 2
|
|
|
|
# Log network requests for debugging
|
|
new-instance v0, Ljava/lang/StringBuilder;
|
|
|
|
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
|
|
|
|
const-string v1, "Network Request: "
|
|
|
|
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
const-string p0, " -> "
|
|
|
|
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
|
|
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
|
|
|
|
move-result-object p0
|
|
|
|
const-string p1, "RR3_OfflineModeManager"
|
|
|
|
invoke-static {p1, p0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
|
|
|
|
return-void
|
|
.end method
|