๐Ÿ”— Redirect Bluesky links to your preferred client
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use redirect referrer to prevent launch loops

+17 -5
+3 -3
gradle/libs.versions.toml
··· 9 9 lifecycle-runtime-ktx = "2.7.0-alpha01" 10 10 activity-compose = "1.8.0-alpha07" 11 11 compose-bom = "2023.09.00-alpha03" 12 - linkSheet = "2.2.0" 12 + linkSheet = "2.3.1" 13 13 material-components = "1.11.0-alpha02" 14 14 mvvmFlowCompose = "0.16.1" 15 15 patreonSupportersRetrieval = "d2e9143db2" 16 16 preferences = "1.2.1" 17 17 hiddenApiBypass = "4.3" 18 - ktor = "2.3.3" 18 + ktor = "2.3.4" 19 19 kotlinx-serialization = "1.6.0" 20 20 shizuku = "13.1.4" 21 - compose-compiler = "1.5.3-dev-k1.9.10-593b4c95fce" 21 + compose-compiler = "1.5.3" 22 22 23 23 [libraries] 24 24 # AndroidX
+14 -2
shared/src/main/java/dev/zwander/shared/RedirectActivity.kt
··· 26 26 import dev.zwander.shared.util.RedirectorTheme 27 27 import dev.zwander.shared.util.openLinkInBrowser 28 28 import dev.zwander.shared.util.prefs 29 + import fe.linksheet.interconnect.LinkSheetConnector 29 30 import io.ktor.client.HttpClient 30 31 import io.ktor.client.request.get 31 32 import io.ktor.http.Url ··· 57 58 contentAlignment = Alignment.BottomCenter, 58 59 ) { 59 60 ModalBottomSheet( 60 - onDismissRequest = {}, 61 + onDismissRequest = { 62 + finish() 63 + }, 61 64 sheetState = remember { 62 65 SheetState( 63 66 skipPartiallyExpanded = true, 64 67 density = density, 65 68 initialValue = SheetValue.Expanded, 66 69 confirmValueChange = { false }, 67 - skipHiddenState = true, 68 70 ) 69 71 }, 70 72 dragHandle = {}, ··· 100 102 intent?.data?.toString()?.replace("web+activity+", "") 101 103 } 102 104 105 + val realReferrer = intent?.let { 106 + LinkSheetConnector.getLinkSheetReferrer(intent) 107 + } ?: referrer 108 + 103 109 when { 104 110 url.isNullOrBlank() || url.contains("oauth/authorize") -> launchInBrowser() 105 111 prefs.openMediaInBrowser.currentValue(this) && isUrlMedia(url) -> launchInBrowser() 106 112 else -> { 107 113 prefs.selectedApp.currentValue(this).run { 108 114 val intents = createIntents(url) 115 + 116 + if (intents.any { it.`package` == realReferrer?.host }) { 117 + launchInBrowser() 118 + return@run 119 + } 120 + 109 121 intents.forEachIndexed { index, intent -> 110 122 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 111 123