diff --git a/src-tauri/gen/android/app/build.gradle.kts b/src-tauri/gen/android/app/build.gradle.kts index 11f5813..55eb21b 100644 --- a/src-tauri/gen/android/app/build.gradle.kts +++ b/src-tauri/gen/android/app/build.gradle.kts @@ -34,7 +34,7 @@ android { defaultConfig { manifestPlaceholders["usesCleartextTraffic"] = "false" applicationId = "com.emerald.legacy" - minSdk = 24 + minSdk = 26 targetSdk = 36 versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt() versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0") diff --git a/src-tauri/gen/android/app/src/main/java/com/emerald/legacy/MainActivity.kt b/src-tauri/gen/android/app/src/main/java/com/emerald/legacy/MainActivity.kt index d034d12..d0b415e 100644 --- a/src-tauri/gen/android/app/src/main/java/com/emerald/legacy/MainActivity.kt +++ b/src-tauri/gen/android/app/src/main/java/com/emerald/legacy/MainActivity.kt @@ -13,7 +13,7 @@ class MainActivity : TauriActivity() { super.onCreate(savedInstanceState) WindowCompat.getInsetsController(window, window.decorView).apply { systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE - hide(WindowInsetsCompat.Type.statusBars()) + hide(WindowInsetsCompat.Type.statusBars() or WindowInsetsCompat.Type.navigationBars()) } } diff --git a/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml b/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..ac3248b 100644 --- a/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml +++ b/src-tauri/gen/android/app/src/main/res/drawable/ic_launcher_background.xml @@ -5,166 +5,6 @@ android:viewportWidth="108" android:viewportHeight="108"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 28f1aa1..8d11c83 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png index 85d0c88..b9e5600 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png index 28f1aa1..05b5f00 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 73e48db..3694969 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png index 13dd214..ce13038 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png index 73e48db..3694969 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 1d98044..43adc4c 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png index a888b33..0a50837 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index 1d98044..43adc4c 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 0818324..d746596 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png index a2a838e..a59b865 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index 0818324..d746596 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index b18bceb..4447cd9 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png index 3f8a57f..e2acd39 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index b18bceb..4447cd9 100644 Binary files a/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/src-tauri/gen/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 8f5566c..897c57c 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -67,7 +67,7 @@ "signingIdentity": null }, "android": { - "minSdkVersion": 24, + "minSdkVersion": 26, "versionCode": 1006000 } } diff --git a/src/components/views/VersionsView.tsx b/src/components/views/VersionsView.tsx index fc95009..499f7ef 100644 --- a/src/components/views/VersionsView.tsx +++ b/src/components/views/VersionsView.tsx @@ -93,21 +93,32 @@ const VersionsView = memo(function VersionsView() { const [setUidTargetId, setSetUidTargetId] = useState(""); const [editingEdition, setEditingEdition] = useState(null); const [isImportWorldModalOpen, setIsImportWorldModalOpen] = useState(false); - const [importWorldTarget, setImportWorldTarget] = useState<{ id: string; name: string } | null>(null); + const [importWorldTarget, setImportWorldTarget] = useState<{ + id: string; + name: string; + } | null>(null); const [isPlaytimeModalOpen, setIsPlaytimeModalOpen] = useState(false); - const [playtimeTarget, setPlaytimeTarget] = useState<{ id: string; name: string } | null>(null); + const [playtimeTarget, setPlaytimeTarget] = useState<{ + id: string; + name: string; + } | null>(null); const [isCustomizeModalOpen, setIsCustomizeModalOpen] = useState(false); const [customizeTarget, setCustomizeTarget] = useState(null); - const [playtimeMap, setPlaytimeMap] = useState>({}); + const [playtimeMap, setPlaytimeMap] = useState< + Record + >({}); const [initialPath, setInitialPath] = useState(""); const [hoveredBtn, setHoveredBtn] = useState<{ row: number; btn: string; } | null>(null); const [openMenuId, setOpenMenuId] = useState(null); - const [deleteConfirmEdition, setDeleteConfirmEdition] = useState(null); + const [deleteConfirmEdition, setDeleteConfirmEdition] = + useState(null); const [isDlcModalOpen, setIsDlcModalOpen] = useState(false); - const [dlcTargetEdition, setDlcTargetEdition] = useState(null); + const [dlcTargetEdition, setDlcTargetEdition] = useState( + null, + ); const containerRef = useRef(null); const listRef = useRef(null); const ITEM_COUNT = editions.length + 3; @@ -218,13 +229,15 @@ const VersionsView = memo(function VersionsView() { useEffect(() => { const fetchPlaytimes = async () => { const map: Record = {}; - await Promise.all(installedVersions.map(async (id) => { - try { - map[id] = await TauriService.getPlaytime(id); - } catch (e) { - console.error(e); - } - })); + await Promise.all( + installedVersions.map(async (id) => { + try { + map[id] = await TauriService.getPlaytime(id); + } catch (e) { + console.error(e); + } + }), + ); setPlaytimeMap(map); }; fetchPlaytimes(); @@ -270,9 +283,7 @@ const VersionsView = memo(function VersionsView() { Versions -
+
{ e.stopPropagation(); playPressSound(); - setPlaytimeTarget({ id: edition.instanceId, name: edition.name }); + setPlaytimeTarget({ + id: edition.instanceId, + name: edition.name, + }); setIsPlaytimeModalOpen(true); }} className="flex items-center gap-1.5 px-2 py-1 bg-black/60 border border-[#555] hover:border-[#FFFF55] group transition-colors flex-shrink-0" @@ -373,7 +387,11 @@ const VersionsView = memo(function VersionsView() { - {playtimeMap[edition.instanceId] ? formatPlaytime(playtimeMap[edition.instanceId].totalSeconds) : ""} + {playtimeMap[edition.instanceId] + ? formatPlaytime( + playtimeMap[edition.instanceId].totalSeconds, + ) + : ""} )} @@ -521,9 +539,11 @@ const VersionsView = memo(function VersionsView() { try { const folder = await TauriService.pickFolder(); if (folder) { - const entries = await TauriService.listDirectory(folder); + const entries = + await TauriService.listDirectory(folder); if (entries.length > 0) { - const dialog = document.createElement("div"); + const dialog = + document.createElement("div"); dialog.className = "fixed inset-0 bg-black/80 flex items-center justify-center z-50"; dialog.innerHTML = ` @@ -536,14 +556,20 @@ const VersionsView = memo(function VersionsView() {
`; document.body.appendChild(dialog); - const close = () => document.body.removeChild(dialog); - dialog.querySelector("#empty-dir-ok")?.addEventListener("click", close); + const close = () => + document.body.removeChild(dialog); + dialog + .querySelector("#empty-dir-ok") + ?.addEventListener("click", close); dialog.addEventListener("click", (e) => { if (e.target === dialog) close(); }); return; } - await saveCustomPath(edition.instanceId, folder); + await saveCustomPath( + edition.instanceId, + folder, + ); toggleInstall(edition.instanceId); } } catch (err) { @@ -612,7 +638,9 @@ const VersionsView = memo(function VersionsView() { onClick={(e) => { e.stopPropagation(); playPressSound(); - TauriService.openInstanceFolder(edition.instanceId); + TauriService.openInstanceFolder( + edition.instanceId, + ); setOpenMenuId(null); }} className="w-full text-left px-3 py-2 text-xs text-[#dddddd] flex items-center gap-2 mc-text-shadow" @@ -693,7 +721,9 @@ const VersionsView = memo(function VersionsView() { onClick={(e) => { e.stopPropagation(); playPressSound(); - TauriService.backupInstance(edition.instanceId).catch((err) => { + TauriService.backupInstance( + edition.instanceId, + ).catch((err) => { if (err !== "CANCELED") console.error(err); }); setOpenMenuId(null); @@ -882,33 +912,35 @@ const VersionsView = memo(function VersionsView() { - + {!isAndroid && ( + + )}
@@ -945,7 +977,12 @@ const VersionsView = memo(function VersionsView() { setEditingEdition(null); setInitialPath(""); }} - onImport={(ed: { name: string; desc: string; url: string; path?: string }) => { + onImport={(ed: { + name: string; + desc: string; + url: string; + path?: string; + }) => { if (editingEdition) { onUpdateEdition(editingEdition.id, ed); } else { @@ -971,7 +1008,10 @@ const VersionsView = memo(function VersionsView() { { setIsImportWorldModalOpen(false); setImportWorldTarget(null); }} + onClose={() => { + setIsImportWorldModalOpen(false); + setImportWorldTarget(null); + }} playPressSound={playPressSound} playBackSound={playBackSound} targetInstanceId={importWorldTarget?.id ?? ""} @@ -980,7 +1020,10 @@ const VersionsView = memo(function VersionsView() { { setIsPlaytimeModalOpen(false); setPlaytimeTarget(null); }} + onClose={() => { + setIsPlaytimeModalOpen(false); + setPlaytimeTarget(null); + }} playBackSound={playBackSound} instanceId={playtimeTarget?.id ?? ""} instanceName={playtimeTarget?.name ?? ""} @@ -988,12 +1031,25 @@ const VersionsView = memo(function VersionsView() { { setIsCustomizeModalOpen(false); setCustomizeTarget(null); }} + onClose={() => { + setIsCustomizeModalOpen(false); + setCustomizeTarget(null); + }} playPressSound={playPressSound} playBackSound={playBackSound} editionName={customizeTarget?.name ?? ""} - currentTitleImage={customizeTarget ? customizations[customizeTarget.instanceId]?.titleImage || customizeTarget.titleImage : undefined} - currentPanorama={customizeTarget ? customizations[customizeTarget.instanceId]?.panorama || customizeTarget.panorama : undefined} + currentTitleImage={ + customizeTarget + ? customizations[customizeTarget.instanceId]?.titleImage || + customizeTarget.titleImage + : undefined + } + currentPanorama={ + customizeTarget + ? customizations[customizeTarget.instanceId]?.panorama || + customizeTarget.panorama + : undefined + } onSave={(updates) => { if (customizeTarget) { updateCustomization(customizeTarget.instanceId, updates); @@ -1003,7 +1059,10 @@ const VersionsView = memo(function VersionsView() { { setIsDlcModalOpen(false); setDlcTargetEdition(null); }} + onClose={() => { + setIsDlcModalOpen(false); + setDlcTargetEdition(null); + }} playPressSound={playPressSound} playBackSound={playBackSound} editionName={dlcTargetEdition?.name ?? ""}