diff --git a/app/src/main/java/corewala/buran/OmniTerm.kt b/app/src/main/java/corewala/buran/OmniTerm.kt index 2069b28..5531da9 100644 --- a/app/src/main/java/corewala/buran/OmniTerm.kt +++ b/app/src/main/java/corewala/buran/OmniTerm.kt @@ -70,10 +70,10 @@ class OmniTerm(private val listener: Listener) { } fun getGlobalUri(reference: String): String { - when { - reference.contains(":") -> return reference - reference.startsWith("//") -> return "gemini:$reference" - else -> return uri.resolve(reference) + return when { + reference.contains(":") -> reference + reference.startsWith("//") -> "gemini:$reference" + else -> uri.resolve(reference) } } diff --git a/app/src/main/java/corewala/buran/io/gemini/GeminiDatasource.kt b/app/src/main/java/corewala/buran/io/gemini/GeminiDatasource.kt index a42dd38..dc5bd3b 100644 --- a/app/src/main/java/corewala/buran/io/gemini/GeminiDatasource.kt +++ b/app/src/main/java/corewala/buran/io/gemini/GeminiDatasource.kt @@ -147,7 +147,7 @@ class GeminiDatasource(private val context: Context, val history: BuranHistory): when { currentRequestAddress != uri.toString() -> {} header.code == GeminiResponse.INPUT -> onUpdate(GemState.ResponseInput(uri, header)) - header.code == GeminiResponse.REDIRECT -> onUpdate(GemState.Redirect(resolve(uri, header.meta))) + header.code == GeminiResponse.REDIRECT -> onUpdate(GemState.Redirect(header.meta)) header.code == GeminiResponse.CLIENT_CERTIFICATE_REQUIRED -> onUpdate(GemState.ClientCertRequired(uri, header)) header.code != GeminiResponse.SUCCESS -> onUpdate(GemState.ResponseError(header)) header.meta.startsWith("text/gemini") -> getGemtext(bufferedReader, requestEntity.trim().toURI(), header, onUpdate) @@ -173,8 +173,6 @@ class GeminiDatasource(private val context: Context, val history: BuranHistory): outWriter.close() socket.close() - - currentRequestAddress = null } private fun getGemtext(reader: BufferedReader, uri: URI, header: GeminiResponse.Header, onUpdate: (state: GemState) -> Unit){ @@ -241,12 +239,6 @@ class GeminiDatasource(private val context: Context, val history: BuranHistory): } } - private fun resolve(uri: URI, address: String): String{ - val ouri = OppenURI() - ouri.set(uri.scheme + uri.host) - return ouri.resolve(address) - } - override fun canGoBack(): Boolean = runtimeHistory.isEmpty() || runtimeHistory.size > 1 //This just forces the factory to rebuild before the next request diff --git a/app/src/main/java/corewala/buran/ui/GemActivity.kt b/app/src/main/java/corewala/buran/ui/GemActivity.kt index aaaa7f0..277e54b 100644 --- a/app/src/main/java/corewala/buran/ui/GemActivity.kt +++ b/app/src/main/java/corewala/buran/ui/GemActivity.kt @@ -458,7 +458,7 @@ class GemActivity : AppCompatActivity() { .show() } - is GemState.Redirect -> gemRequest(state.uri) + is GemState.Redirect -> gemRequest(omniTerm.getGlobalUri(state.uri)) is GemState.ClientCertRequired -> runOnUiThread { loadingView(false)