mirror of
https://github.com/bryanthaboi/gen1recomp.git
synced 2026-08-19 20:20:19 +02:00
feat(nx-mods): route chooseMod to inbox rescan on NX
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1202,8 +1202,14 @@ end
|
|||||||
-- Android mirrors ROM import: scan for a pending .zip in the save dir (USB
|
-- Android mirrors ROM import: scan for a pending .zip in the save dir (USB
|
||||||
-- or a fresh SAF drop), else love.system.pickFile("mod") -> picked_mod.zip
|
-- or a fresh SAF drop), else love.system.pickFile("mod") -> picked_mod.zip
|
||||||
-- which focus/Choose consumes on return.
|
-- which focus/Choose consumes on return.
|
||||||
|
-- NX: no HostShell/desktop picker — rescan imports/mods/ inbox instead.
|
||||||
function RomImporter:chooseMod()
|
function RomImporter:chooseMod()
|
||||||
if self.workState == "working" then return end
|
if self.workState == "working" then return end
|
||||||
|
if self.isNX then
|
||||||
|
self:ensureModsInboxDir()
|
||||||
|
self:rescanModsAction()
|
||||||
|
return
|
||||||
|
end
|
||||||
if self.android then
|
if self.android then
|
||||||
local name = findPendingMod(true, self.pickSkip)
|
local name = findPendingMod(true, self.pickSkip)
|
||||||
if name then
|
if name then
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ local function freshImporter()
|
|||||||
scanModsInbox = RomImporter.scanModsInbox,
|
scanModsInbox = RomImporter.scanModsInbox,
|
||||||
scanInbox = RomImporter.scanInbox,
|
scanInbox = RomImporter.scanInbox,
|
||||||
rescanModsAction = RomImporter.rescanModsAction,
|
rescanModsAction = RomImporter.rescanModsAction,
|
||||||
|
chooseMod = RomImporter.chooseMod,
|
||||||
_installMod = RomImporter._installMod,
|
_installMod = RomImporter._installMod,
|
||||||
_refreshMods = function(self)
|
_refreshMods = function(self)
|
||||||
self._refreshed = (self._refreshed or 0) + 1
|
self._refreshed = (self._refreshed or 0) + 1
|
||||||
@@ -184,11 +185,32 @@ check(not removed["imports/mods/b-good.zip"], "mixed: good zip retained")
|
|||||||
check(love.filesystem.read("imports/mods/a-bad.zip") ~= nil, "mixed bad still present")
|
check(love.filesystem.read("imports/mods/a-bad.zip") ~= nil, "mixed bad still present")
|
||||||
check(love.filesystem.read("imports/mods/b-good.zip") ~= nil, "mixed good still present")
|
check(love.filesystem.read("imports/mods/b-good.zip") ~= nil, "mixed good still present")
|
||||||
|
|
||||||
|
-- NXMOD-05: chooseMod on NX routes to inbox rescan; no HostShell/chooseZip
|
||||||
|
local hostShellCalls = 0
|
||||||
|
package.loaded["src.core.HostShell"] = {
|
||||||
|
run = function()
|
||||||
|
hostShellCalls = hostShellCalls + 1
|
||||||
|
error("HostShell must not run on NX chooseMod")
|
||||||
|
end,
|
||||||
|
available = function() return false end,
|
||||||
|
}
|
||||||
|
ri = freshImporter()
|
||||||
|
installCalls = {}
|
||||||
|
love.filesystem.write("imports/mods/from-choose.zip", "CHOOSE")
|
||||||
|
installBehavior["imports/mods/from-choose.zip"] = { ok = true, id = "choose-mod" }
|
||||||
|
ri:chooseMod()
|
||||||
|
eq(hostShellCalls, 0, "NX chooseMod does not require HostShell")
|
||||||
|
eq(#installCalls, 1, "NX chooseMod rescans and installs inbox zip")
|
||||||
|
eq(installCalls[1], "imports/mods/from-choose.zip",
|
||||||
|
"NX chooseMod installs from imports/mods/")
|
||||||
|
check(ri.modNotice and ri.modNotice.ok, "NX chooseMod success notice")
|
||||||
|
|
||||||
-- Cleanup + restore stubs
|
-- Cleanup + restore stubs
|
||||||
clearModsInbox()
|
clearModsInbox()
|
||||||
love.filesystem.remove("imports/other.zip")
|
love.filesystem.remove("imports/other.zip")
|
||||||
love.filesystem.remove("imports/modpack.zip")
|
love.filesystem.remove("imports/modpack.zip")
|
||||||
package.loaded["src.mods.LauncherMods"] = nil
|
package.loaded["src.mods.LauncherMods"] = nil
|
||||||
|
package.loaded["src.core.HostShell"] = nil
|
||||||
love.system.getOS = saved.getOS
|
love.system.getOS = saved.getOS
|
||||||
love.filesystem.getSaveDirectory = saved.getSaveDirectory
|
love.filesystem.getSaveDirectory = saved.getSaveDirectory
|
||||||
love.filesystem.createDirectory = saved.createDirectory
|
love.filesystem.createDirectory = saved.createDirectory
|
||||||
|
|||||||
Reference in New Issue
Block a user