ENH - open exact EasyShare content targets

This commit is contained in:
smx.pusha
2026-08-12 07:44:55 +02:00
parent eeb3396f52
commit ea34dce1c8
13 changed files with 169 additions and 4 deletions
+11
View File
@@ -709,6 +709,17 @@ onMounted(async () => {
if (route.query.compose === '1') screen.value = 'composer'
await feather.bootstrap()
if (feather.onboarded) {
const easyShareId = String(route.query.easyShareId ?? '')
if (easyShareId && route.query.easyShareKind === 'profile') {
const profileId = Number(easyShareId)
if (Number.isInteger(profileId) && profileId > 0)
await openProfile(profileId)
} else if (easyShareId && route.query.easyShareKind === 'post') {
if (await feather.loadThread(easyShareId)) {
threadReplyTarget.value = feather.thread?.post ?? null
screen.value = 'thread'
}
}
await feather.loadActivities()
if (tab.value === 'profile' && feather.profile)
await feather.loadProfile(feather.profile.id)
+14 -1
View File
@@ -50,7 +50,7 @@ import {
kToggle,
} from 'konsta/vue'
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import { useRouter } from 'vue-router'
import { useRoute, useRouter } from 'vue-router'
import flipTokIcon from '@/assets/img/app-icons/fliptok.webp'
import { useFlipTokStore } from '@/stores/fliptok'
@@ -71,6 +71,7 @@ type AuthMode = 'login' | 'register'
const phone = usePhoneStore()
const store = useFlipTokStore()
const messageMedia = useMessageMediaStore()
const route = useRoute()
const router = useRouter()
const authMode = ref<AuthMode>('login')
const authHandle = ref('')
@@ -776,6 +777,18 @@ onMounted(async () => {
composeOpen.value = true
}
await store.bootstrap()
const easyShareId = String(route.query.easyShareId ?? '')
if (easyShareId && route.query.easyShareKind === 'profile') {
const profileId = Number(easyShareId)
if (Number.isInteger(profileId) && profileId > 0)
await openProfile(profileId)
} else if (easyShareId && route.query.easyShareKind === 'post') {
const video = await store.loadVideo(easyShareId)
if (video) {
store.feed = [video]
tab.value = 'feed'
}
}
await nextTick()
observeVideos()
})
+11 -2
View File
@@ -279,7 +279,7 @@ function sharePost(): void {
})
}
onMounted(() => {
onMounted(async () => {
const selection = messageMedia.consumeMany<MediaContext>('local-pages:compose')
if (selection) {
if (selection.context) {
@@ -294,7 +294,16 @@ onMounted(() => {
}
}
if (route.query.compose === '1') screen.value = 'compose'
void loadFeed()
await loadFeed()
const easyShareId = String(route.query.easyShareId ?? '')
if (easyShareId && route.query.easyShareKind === 'post') {
const response = await pages.get(easyShareId)
if (response.success && response.data) {
selected.value = response.data
galleryIndex.value = 0
screen.value = 'detail'
}
}
})
</script>
+12 -1
View File
@@ -55,7 +55,7 @@ import {
kToggle,
} from 'konsta/vue'
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import { useRouter } from 'vue-router'
import { useRoute, useRouter } from 'vue-router'
import picstagramIcon from '@/assets/img/app-icons/picstagram.webp'
import { useMessageMediaStore } from '@/stores/messageMedia'
@@ -80,6 +80,7 @@ type ProfileSection = 'photos' | 'saved'
const phone = usePhoneStore()
const store = usePicstagramStore()
const mediaPicker = useMessageMediaStore()
const route = useRoute()
const router = useRouter()
const tab = ref<Tab>('home')
@@ -629,6 +630,16 @@ watch(profileSection, (section) => {
onMounted(async () => {
await store.bootstrap()
const easyShareId = String(route.query.easyShareId ?? '')
if (easyShareId && route.query.easyShareKind === 'profile') {
await openProfile(easyShareId)
} else if (easyShareId && route.query.easyShareKind === 'post') {
const post = await store.loadPost(easyShareId)
if (post) {
tab.value = 'home'
selectedPost.value = post
}
}
const composeSelection = mediaPicker.consumeMany<{
caption?: string
commentsEnabled?: boolean