From 11ab61ca7fd4b9dad495824549817d57a8af0d41 Mon Sep 17 00:00:00 2001 From: tateisu Date: Fri, 5 Feb 2021 08:51:45 +0900 Subject: [PATCH] fix host contains incorrect url schema part --- .../jp/juggler/subwaytooter/api/entity/Acct.kt | 14 ++++++++++---- .../jp/juggler/subwaytooter/table/SavedAccount.kt | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/jp/juggler/subwaytooter/api/entity/Acct.kt b/app/src/main/java/jp/juggler/subwaytooter/api/entity/Acct.kt index d09dcb8e..b4f1e884 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/api/entity/Acct.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/api/entity/Acct.kt @@ -5,6 +5,10 @@ import java.net.IDN import java.util.* import java.util.concurrent.ConcurrentHashMap +private val reUrlSchema = """\A\w+://""".toRegex() + +fun String.removeUrlSchema() = replace(reUrlSchema,"") + class Host private constructor( val ascii : String, val pretty : String = ascii @@ -33,14 +37,16 @@ class Host private constructor( companion object { // declare this first! private val hostSet = ConcurrentHashMap() - + + val EMPTY = Host("") val UNKNOWN = Host("?") val FRIENDS_NICO = Host("friends.nico") - - fun parse(src : String) : Host { - val cached = hostSet[src] + + fun parse(srcArg : String) : Host { + val cached = hostSet[srcArg] if(cached != null) return cached + val src = srcArg.removeUrlSchema() val ascii = IDN.toASCII(src, IDN.ALLOW_UNASSIGNED).toLowerCase(Locale.JAPAN) val pretty = IDN.toUnicode(src, IDN.ALLOW_UNASSIGNED) val host = if(ascii == pretty) Host(ascii) else Host(ascii, pretty) diff --git a/app/src/main/java/jp/juggler/subwaytooter/table/SavedAccount.kt b/app/src/main/java/jp/juggler/subwaytooter/table/SavedAccount.kt index c202fc41..75068469 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/table/SavedAccount.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/table/SavedAccount.kt @@ -84,7 +84,7 @@ class SavedAccount( this.apiHost = tmpApiHost ?: tmpApDomain ?: tmpAcct.host ?: error("missing apiHost") this.apDomain = tmpApDomain ?: tmpApiHost ?: tmpAcct.host ?: error("missing apDomain") - + this.acct = tmpAcct.followHost(apDomain) }