forked from owncloud/web
-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathuseEmbedMode.ts
More file actions
84 lines (66 loc) · 2.16 KB
/
useEmbedMode.ts
File metadata and controls
84 lines (66 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import { computed, unref } from 'vue'
import { useConfigStore } from '../piniaStores'
import { Resource } from '@ownclouders/web-client'
import { LocationQuery } from '../router'
export interface embedModeFilePickMessageData {
resource: Resource
locationQuery: LocationQuery
}
export interface embedModeLocationPickMessageData {
resources: Resource[]
fileName?: string
locationQuery?: LocationQuery
}
export const useEmbedMode = () => {
const configStore = useConfigStore()
const isEnabled = computed(() => configStore.options.embed?.enabled)
const isLocationPicker = computed(() => {
return configStore.options.embed?.target === 'location'
})
const chooseFileName = computed(() => {
return configStore.options.embed?.chooseFileName
})
const chooseFileNameSuggestion = computed(() => {
return configStore.options.embed?.chooseFileNameSuggestion
})
const isFilePicker = computed(() => {
return configStore.options.embed?.target === 'file'
})
const fileTypes = computed(() => {
return configStore.options.embed?.fileTypes
})
const messagesTargetOrigin = computed(() => {
return configStore.options.embed?.messagesOrigin
})
const isDelegatingAuthentication = computed(
() => unref(isEnabled) && configStore.options.embed?.delegateAuthentication
)
const delegateAuthenticationOrigin = computed(
() => configStore.options.embed?.delegateAuthenticationOrigin
)
const postMessage = <Payload>(name: string, data?: Payload): void => {
const options: WindowPostMessageOptions = {}
if (unref(messagesTargetOrigin)) {
options.targetOrigin = unref(messagesTargetOrigin)
}
window.parent.postMessage({ name, data }, options)
}
const verifyDelegatedAuthenticationOrigin = (eventOrigin: string): boolean => {
if (!unref(delegateAuthenticationOrigin)) {
return true
}
return unref(delegateAuthenticationOrigin) === eventOrigin
}
return {
isEnabled,
isLocationPicker,
chooseFileName,
chooseFileNameSuggestion,
isFilePicker,
messagesTargetOrigin,
isDelegatingAuthentication,
fileTypes,
postMessage,
verifyDelegatedAuthenticationOrigin
}
}