diff --git a/app/src/main/java/corewala/buran/io/GemState.kt b/app/src/main/java/corewala/buran/io/GemState.kt index 0fb84db..a306471 100644 --- a/app/src/main/java/corewala/buran/io/GemState.kt +++ b/app/src/main/java/corewala/buran/io/GemState.kt @@ -10,7 +10,7 @@ sealed class GemState { data class NotGeminiRequest(val uri: URI) : GemState() data class ResponseGemtext(val uri: URI, val header: GeminiResponse.Header, val lines: List) : GemState() data class ResponseInput(val uri: URI, val header: GeminiResponse.Header) : GemState() - class Redirect(val uri: String) : GemState() + data class Redirect(val uri: URI, val header: GeminiResponse.Header) : GemState() data class ResponseText(val uri: URI, val header: GeminiResponse.Header, val content: String) : GemState() data class ResponseImage(val uri: URI, val header: GeminiResponse.Header, val cacheUri: Uri) : GemState() data class ResponseBinary(val uri: URI, val header: GeminiResponse.Header, val cacheUri: Uri) : GemState() 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 2172b6d..2494d2d 100644 --- a/app/src/main/java/corewala/buran/io/gemini/GeminiDatasource.kt +++ b/app/src/main/java/corewala/buran/io/gemini/GeminiDatasource.kt @@ -148,7 +148,7 @@ class GeminiDatasource(private val context: Context, val history: BuranHistory): currentRequestAddress = null when { header.code == GeminiResponse.INPUT -> onUpdate(GemState.ResponseInput(uri, header)) - header.code == GeminiResponse.REDIRECT -> onUpdate(GemState.Redirect(header.meta)) + header.code == GeminiResponse.REDIRECT -> onUpdate(GemState.Redirect(uri, header)) 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) diff --git a/app/src/main/java/corewala/buran/ui/GemActivity.kt b/app/src/main/java/corewala/buran/ui/GemActivity.kt index c2413fc..9ea9a79 100644 --- a/app/src/main/java/corewala/buran/ui/GemActivity.kt +++ b/app/src/main/java/corewala/buran/ui/GemActivity.kt @@ -458,7 +458,10 @@ class GemActivity : AppCompatActivity() { .show() } - is GemState.Redirect -> gemRequest(omniTerm.getGlobalUri(state.uri)) + is GemState.Redirect -> { + omniTerm.set(proxiedAddress ?: state.uri.toString()) + gemRequest(omniTerm.getGlobalUri(state.header.meta)) + } is GemState.ClientCertRequired -> runOnUiThread { loadingView(false)