1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-3397 Deep links | Enhancement | Support https links for objects (#2132)

This commit is contained in:
Evgenii Kozlov 2025-03-05 14:38:59 +01:00 committed by GitHub
parent 983afe2a62
commit 37da962c6a
Signed by: github
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 3 deletions

View file

@ -53,6 +53,19 @@
<data android:scheme="http"/>
<data android:host="invite.any.coop" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="download.anytype.io/" />
</intent-filter>
<intent-filter android:label="Link to object" android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="object.any.coop" android:pathPattern=".*" />
<data android:scheme="http" android:host="object.any.coop" android:pathPattern=".*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />

View file

@ -11,6 +11,8 @@ const val DEEP_LINK_PATTERN = "anytype://"
const val DEEP_LINK_INVITE_DOMAIN = "invite.any.coop"
const val DEEP_LINK_TO_OBJECT_BASE_URL = "https://object.any.coop"
/**
* Regex pattern for matching
*/
@ -28,6 +30,7 @@ const val TYPE_PARAM = "type"
const val OBJECT_ID_PARAM = "objectId"
const val SPACE_ID_PARAM = "spaceId"
const val CONTENT_ID_PARAM = "cid"
const val INVITE_ID_PARAM = "inviteID"
const val ENCRYPTION_KEY_PARAM = "key"
const val SOURCE_PARAM = "source"
const val TYPE_VALUE_EXPERIENCE = "experience"
@ -93,7 +96,7 @@ object DefaultDeepLinkResolver : DeepLinkResolver {
}
override fun createObjectDeepLink(obj: Id, space: SpaceId): Url {
return "${DEEP_LINK_PATTERN}${OBJECT_PATH}?${OBJECT_ID_PARAM}=$obj&${SPACE_ID_PARAM}=${space.id}"
return "$DEEP_LINK_TO_OBJECT_BASE_URL/$obj?$SPACE_ID_PARAM=${space.id}"
}
override fun createObjectDeepLinkWithInvite(
@ -102,7 +105,7 @@ object DefaultDeepLinkResolver : DeepLinkResolver {
invite: Id,
encryptionKey: String
): Url {
return "${DEEP_LINK_PATTERN}${OBJECT_PATH}?${OBJECT_ID_PARAM}=$obj&${SPACE_ID_PARAM}=${space.id}&${DefaultSpaceInviteResolver.CONTENT_ID_KEY}=$invite&${DefaultSpaceInviteResolver.FILE_KEY_KEY}=$encryptionKey"
return "${DEEP_LINK_TO_OBJECT_BASE_URL}/$obj?${SPACE_ID_PARAM}=${space.id}&${INVITE_ID_PARAM}=$invite#$encryptionKey"
}
override fun isDeepLink(link: String): Boolean {
@ -139,6 +142,7 @@ object DefaultSpaceInviteResolver : SpaceInviteResolver {
return "https://$DEEP_LINK_INVITE_DOMAIN/$contentId#$encryptionKey"
}
private const val CONTENT_INDEX = 1
private const val KEY_INDEX = 2
const val CONTENT_ID_KEY = "cid"

View file

@ -336,6 +336,7 @@ class MainViewModel(
space = deeplink.space,
switchSpaceIfObjectFound = true
)
Timber.d("Deep link to object result: $result")
when (result) {
is DeepLinkToObjectDelegate.Result.Error -> {
val link = deeplink.invite
@ -349,7 +350,7 @@ class MainViewModel(
)
)
} else {
toasts.emit("Error: $result")
commands.emit(Command.Deeplink.DeepLinkToObjectNotWorking)
}
}
is DeepLinkToObjectDelegate.Result.Success -> {