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:
parent
983afe2a62
commit
37da962c6a
3 changed files with 21 additions and 3 deletions
|
@ -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" />
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 -> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue