diff --git a/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt b/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt index baa245b98..c35421ef0 100644 --- a/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt +++ b/app/src/main/java/io/legato/kazusa/data/entities/BaseSource.kt @@ -65,7 +65,25 @@ interface BaseSource : JsExtensions { } fun loginUi(): List? { - return GSON.fromJsonArray(loginUi).onFailure { + val json = loginUi?.let { + val loginJS = getLoginJs() ?: "" + try { + when { + it.startsWith("@js:") -> evalJS(loginJS + it.substring(4)){ + put("result", getLoginInfoMap()) + }.toString() + it.startsWith("") -> evalJS(loginJS + it.substring(4,it.lastIndexOf("<"))){ + put("result", getLoginInfoMap()) + }.toString() + else -> it + } + } catch (e: Throwable) { + log(e) + e.printOnDebug() + null + } + } + return GSON.fromJsonArray(json).onFailure { it.printOnDebug() }.getOrNull() } @@ -176,8 +194,9 @@ interface BaseSource : JsExtensions { } } - fun getLoginInfoMap(): Map? { - return GSON.fromJsonObject>(getLoginInfo()).getOrNull() + fun getLoginInfoMap(): Map { + val json = getLoginInfo() ?: return emptyMap() + return GSON.fromJsonObject>(json).getOrNull() ?: emptyMap() } /**