diff --git a/packages/frontend-2/components/header/nav/Share.vue b/packages/frontend-2/components/header/nav/Share.vue
index 86c6f3851..5e67c5d23 100644
--- a/packages/frontend-2/components/header/nav/Share.vue
+++ b/packages/frontend-2/components/header/nav/Share.vue
@@ -74,7 +74,6 @@ import { SpeckleViewer } from '@speckle/shared'
import { keyboardClick } from '@speckle/ui-components'
import { graphql } from '~/lib/common/generated/gql/gql'
import type { HeaderNavShare_ProjectFragment } from '~~/lib/common/generated/gql/graphql'
-import { useCopyModelLink } from '~~/lib/projects/composables/modelManagement'
graphql(`
fragment HeaderNavShare_Project on Project {
@@ -90,7 +89,6 @@ const props = defineProps<{
}>()
const { copy } = useClipboard()
-const copyModelLink = useCopyModelLink()
const menuButtonId = useId()
const embedDialogOpen = ref(false)
@@ -99,37 +97,16 @@ const parsedResourceIds = computed(() =>
SpeckleViewer.ViewerRoute.parseUrlParameters(props.resourceIdString)
)
-const firstResource = computed(() => parsedResourceIds.value[0] || {})
-
-const versionId = computed(() => {
- if (SpeckleViewer.ViewerRoute.isModelResource(firstResource.value)) {
- return firstResource.value.versionId
- }
- return ''
-})
-
-const modelId = computed(() => {
- if (SpeckleViewer.ViewerRoute.isModelResource(firstResource.value)) {
- return firstResource.value.modelId // Assuming your firstResource object has a modelId property
- }
- return ''
-})
-
const isFederated = computed(() => parsedResourceIds.value.length > 1)
-const handleCopyId = () => {
- copy(props.resourceIdString, { successMessage: 'ID copied to clipboard' })
+const handleCopyId = async () => {
+ await copy(props.resourceIdString, { successMessage: 'ID copied to clipboard' })
}
-const handleCopyLink = () => {
- const modelIdValue = modelId.value
- const versionIdValue = versionId.value ? versionId.value : undefined
- void copyModelLink({
- model: {
- projectId: props.project.id,
- id: modelIdValue
- },
- versionId: versionIdValue
+const handleCopyLink = async () => {
+ if (import.meta.server) return
+ await copy(window.location.href, {
+ successMessage: 'Copied link to clipboard'
})
}
diff --git a/packages/frontend-2/components/presentation/controls/Controls.vue b/packages/frontend-2/components/presentation/controls/Controls.vue
index 275ac6f20..f6817dfc3 100644
--- a/packages/frontend-2/components/presentation/controls/Controls.vue
+++ b/packages/frontend-2/components/presentation/controls/Controls.vue
@@ -29,6 +29,7 @@ import { LucideChevronLeft, LucideChevronRight, LucideRotateCcw } from 'lucide-v
import { useInjectedPresentationState } from '~/lib/presentations/composables/setup'
import { clamp } from 'lodash-es'
import { useEventListener } from '@vueuse/core'
+import { useResetViewUtils } from '~/lib/presentations/composables/utils'
defineProps<{
hideUi?: boolean
@@ -36,8 +37,9 @@ defineProps<{
const {
ui: { slideIdx: currentVisibleIndex, slideCount },
- viewer: { resetView, hasViewChanged }
+ viewer: { hasViewChanged }
} = useInjectedPresentationState()
+const { resetView } = useResetViewUtils()
const disablePrevious = computed(() => currentVisibleIndex.value === 0)
const disableNext = computed(() =>
diff --git a/packages/frontend-2/components/presentation/slideList/Slide.vue b/packages/frontend-2/components/presentation/slideList/Slide.vue
index 50f7a2933..da7d98c7b 100644
--- a/packages/frontend-2/components/presentation/slideList/Slide.vue
+++ b/packages/frontend-2/components/presentation/slideList/Slide.vue
@@ -26,6 +26,7 @@ import { graphql } from '~~/lib/common/generated/gql'
import type { PresentationSlideListSlide_SavedViewFragment } from '~~/lib/common/generated/gql/graphql'
import { useInjectedPresentationState } from '~/lib/presentations/composables/setup'
import { useAuthManager } from '~~/lib/auth/composables/auth'
+import { useResetViewUtils } from '~/lib/presentations/composables/utils'
graphql(`
fragment PresentationSlideListSlide_SavedView on SavedView {
@@ -42,10 +43,10 @@ const props = defineProps<{
}>()
const {
- ui: { slideIdx: currentSlideIdx, slide: currentSlide },
- viewer: { resetView }
+ ui: { slideIdx: currentSlideIdx, slide: currentSlide }
} = useInjectedPresentationState()
const { presentationToken } = useAuthManager()
+const { resetView } = useResetViewUtils()
const isCurrentSlide = computed(() => currentSlide.value?.id === props.slide.id)
diff --git a/packages/frontend-2/components/presentation/viewer/PostSetup.vue b/packages/frontend-2/components/presentation/viewer/PostSetup.vue
new file mode 100644
index 000000000..7b9a7fed1
--- /dev/null
+++ b/packages/frontend-2/components/presentation/viewer/PostSetup.vue
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/packages/frontend-2/components/presentation/viewer/Wrapper.vue b/packages/frontend-2/components/presentation/viewer/Wrapper.vue
index 02ae024fb..48dfbaf83 100644
--- a/packages/frontend-2/components/presentation/viewer/Wrapper.vue
+++ b/packages/frontend-2/components/presentation/viewer/Wrapper.vue
@@ -1,9 +1,11 @@
-
+
+
+