@dative-gpi/foundation-shared-services 1.0.41 → 1.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/composables/app/index.ts
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { computed, ref } from "vue";
|
|
2
|
+
|
|
3
|
+
const authToken = ref<string | undefined>(undefined);
|
|
4
|
+
|
|
5
|
+
export const useAppAuthToken = () => {
|
|
6
|
+
const setAppAuthToken = (payload: string) => {
|
|
7
|
+
authToken.value = payload;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const ready = computed(() => authToken.value !== null);
|
|
11
|
+
|
|
12
|
+
return {
|
|
13
|
+
authToken,
|
|
14
|
+
ready,
|
|
15
|
+
setAppAuthToken
|
|
16
|
+
};
|
|
17
|
+
}
|
|
@@ -1,170 +1,56 @@
|
|
|
1
|
-
import { addMilliseconds, format, parse, subDays } from "date-fns";
|
|
2
1
|
import { computed, ref } from "vue";
|
|
3
2
|
|
|
4
|
-
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
5
|
-
import { ISO_FORMAT, OPTIONS } from "@dative-gpi/foundation-shared-domain/tools";
|
|
6
|
-
|
|
7
|
-
import { useAppLanguageCode } from "./useAppLanguageCode";
|
|
8
|
-
|
|
9
3
|
const timeZone = ref<string | undefined>(undefined);
|
|
10
4
|
|
|
11
5
|
export const useAppTimeZone = () => {
|
|
12
|
-
const { $tr } = useTranslationsProvider();
|
|
13
|
-
|
|
14
6
|
const setAppTimeZone = (payload: string) => {
|
|
15
7
|
timeZone.value = payload;
|
|
16
8
|
};
|
|
17
9
|
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
const date = new Date(value);
|
|
23
|
-
return date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value });
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const epochToLongDateFormat = (value: number | null | undefined): string => {
|
|
27
|
-
if (value == null || !isFinite(value)) {
|
|
28
|
-
return "";
|
|
29
|
-
}
|
|
30
|
-
const date = new Date(value);
|
|
31
|
-
const now = new Date();
|
|
32
|
-
if (date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value }) === now.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value })) {
|
|
33
|
-
return $tr("ui.time-zone.today", "Today");
|
|
34
|
-
}
|
|
35
|
-
if (date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value }) === subDays(now, 1).toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value })) {
|
|
36
|
-
return $tr("ui.time-zone.yesterday", "Yesterday");
|
|
37
|
-
}
|
|
38
|
-
const dateString = date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.longDate, timeZone: timeZone.value });
|
|
39
|
-
return dateString[0].toLocaleUpperCase() + dateString.slice(1);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const epochToShortTimeFormat = (value: number | null | undefined): string => {
|
|
43
|
-
if (value == null || !isFinite(value)) {
|
|
44
|
-
return "";
|
|
45
|
-
}
|
|
46
|
-
const date = new Date(value);
|
|
47
|
-
return date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortTime, timeZone: timeZone.value });
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
const epochToLongTimeFormat = (value: number | null | undefined): string => {
|
|
51
|
-
if (value == null || !isFinite(value)) {
|
|
52
|
-
return "";
|
|
53
|
-
}
|
|
54
|
-
const date = new Date(value);
|
|
55
|
-
const now = new Date();
|
|
56
|
-
if (date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value }) === now.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value })) {
|
|
57
|
-
return `${$tr("ui.time-zone.today-at", "Today at")} ${date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.time, timeZone: timeZone.value })}`;
|
|
58
|
-
}
|
|
59
|
-
if (date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value }) === subDays(now, 1).toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value })) {
|
|
60
|
-
return `${$tr("ui.time-zone.yesterday-at", "Yesterday at")} ${date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.time, timeZone: timeZone.value })}`;
|
|
61
|
-
}
|
|
62
|
-
const dateString = date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.longTime, timeZone: timeZone.value });
|
|
63
|
-
return dateString[0].toLocaleUpperCase() + dateString.slice(1);
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const epochToTimeOnlyFormat = (value: number | null | undefined): string => {
|
|
67
|
-
if (value == null || !isFinite(value)) {
|
|
68
|
-
return "";
|
|
69
|
-
}
|
|
70
|
-
const date = new Date(value);
|
|
71
|
-
return date.toLocaleString(useAppLanguageCode().languageCode.value, { ...OPTIONS.time, timeZone: timeZone.value });
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
const getOffsetUser = (): number => {
|
|
75
|
-
const offsetParts = (Intl.DateTimeFormat(undefined, {
|
|
76
|
-
timeZone: timeZone.value,
|
|
10
|
+
const getUserFormatter = (): Intl.DateTimeFormat => {
|
|
11
|
+
return new Intl.DateTimeFormat(undefined, {
|
|
12
|
+
timeZone: timeZone.value || Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
77
13
|
timeZoneName: "longOffset"
|
|
78
|
-
})
|
|
79
|
-
return (parseInt(offsetParts[0]) * 60 + parseInt(offsetParts[1])) * 60 * 1000;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
const getOffsetUserChart = (withUTC: boolean = true): string => {
|
|
83
|
-
const offsetPart = (Intl.DateTimeFormat(undefined, {
|
|
84
|
-
timeZone: timeZone.value,
|
|
85
|
-
timeZoneName: "longOffset"
|
|
86
|
-
}).formatToParts(new Date).pop()?.value.slice(3) || "+00:00");
|
|
87
|
-
return `${withUTC ? 'UTC ' : ''}${offsetPart}`;
|
|
14
|
+
});
|
|
88
15
|
}
|
|
89
16
|
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
93
|
-
timeZoneName: "longOffset"
|
|
94
|
-
}).formatToParts(new Date).pop()?.value.slice(3) || "+00:00").split(':');
|
|
95
|
-
return (parseInt(offsetParts[0]) * 60 + parseInt(offsetParts[1])) * 60 * 1000;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
const getOffsetMachineChart = (withUTC: boolean = true): string => {
|
|
99
|
-
const offsetPart = (Intl.DateTimeFormat(undefined, {
|
|
17
|
+
const getMachineFormatter = (): Intl.DateTimeFormat => {
|
|
18
|
+
return new Intl.DateTimeFormat(undefined, {
|
|
100
19
|
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
101
20
|
timeZoneName: "longOffset"
|
|
102
|
-
})
|
|
103
|
-
return `${withUTC ? 'UTC ' : ''}${offsetPart}`;
|
|
21
|
+
});
|
|
104
22
|
}
|
|
105
23
|
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const todayToEpoch = (): number => {
|
|
114
|
-
return (new Date().getTime() + getOffsetDifference());
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
const pickerToEpoch = (value: Date | null | undefined): number => {
|
|
118
|
-
if (value != null) {
|
|
119
|
-
return value.getTime() - getOffsetDifference();
|
|
120
|
-
}
|
|
121
|
-
return 0;
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
const epochToPicker = (value: number | null | undefined): Date => {
|
|
125
|
-
if (value != null) {
|
|
126
|
-
return new Date(value + getOffsetDifference());
|
|
127
|
-
}
|
|
128
|
-
return new Date(0);
|
|
129
|
-
};
|
|
24
|
+
const getUserOffsetName = (): string => {
|
|
25
|
+
const formatter = getUserFormatter();
|
|
26
|
+
const currentDate = formatter.formatToParts(new Date());
|
|
27
|
+
const timeZoneName = currentDate.find((part) => part.type === "timeZoneName")?.value || "UTC+00:00";
|
|
28
|
+
return timeZoneName
|
|
29
|
+
}
|
|
130
30
|
|
|
131
|
-
const
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
};
|
|
31
|
+
const getUserOffset = (): number => {
|
|
32
|
+
const timeZoneName = getUserOffsetName();
|
|
33
|
+
const [hours, minutes] = timeZoneName.slice(3).split(':');
|
|
135
34
|
|
|
136
|
-
|
|
137
|
-
const date = addMilliseconds(new Date(), -getOffsetMachine());
|
|
138
|
-
date.setSeconds(0, 0);
|
|
139
|
-
return format(date, ISO_FORMAT);
|
|
35
|
+
return (parseInt(hours) * 60 + parseInt(minutes)) * 60 * 1000;
|
|
140
36
|
};
|
|
141
37
|
|
|
142
|
-
const
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
38
|
+
const getMachineOffsetName = (): string => {
|
|
39
|
+
const formatter = getMachineFormatter();
|
|
40
|
+
const currentDate = formatter.formatToParts(new Date());
|
|
41
|
+
const timeZoneName = currentDate.find((part) => part.type === "timeZoneName")?.value || "UTC+00:00";
|
|
42
|
+
return timeZoneName;
|
|
146
43
|
};
|
|
147
44
|
|
|
148
|
-
const
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
return null;
|
|
152
|
-
}
|
|
153
|
-
return date.getTime();
|
|
154
|
-
};
|
|
45
|
+
const getMachineOffset = (): number => {
|
|
46
|
+
const timeZoneName = getMachineOffsetName();
|
|
47
|
+
const [hours, minutes] = timeZoneName.slice(3).split(':');
|
|
155
48
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
return format(date - getOffsetMachine(), ISO_FORMAT);
|
|
159
|
-
}
|
|
160
|
-
return "";
|
|
161
|
-
};
|
|
49
|
+
return (parseInt(hours) * 60 + parseInt(minutes)) * 60 * 1000;
|
|
50
|
+
}
|
|
162
51
|
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
return "";
|
|
166
|
-
}
|
|
167
|
-
return format(epoch - getOffsetMachine(), ISO_FORMAT);
|
|
52
|
+
const getOffsetDifference = (): number => {
|
|
53
|
+
return getUserOffset() - getMachineOffset();
|
|
168
54
|
};
|
|
169
55
|
|
|
170
56
|
const ready = computed(() => timeZone.value !== null);
|
|
@@ -173,24 +59,10 @@ export const useAppTimeZone = () => {
|
|
|
173
59
|
ready,
|
|
174
60
|
timeZone,
|
|
175
61
|
setAppTimeZone,
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
epochToLongDateFormat,
|
|
181
|
-
epochToLongTimeFormat,
|
|
182
|
-
epochToShortDateFormat,
|
|
183
|
-
epochToShortTimeFormat,
|
|
184
|
-
epochToTimeOnlyFormat,
|
|
185
|
-
parseForPicker,
|
|
186
|
-
todayToPicker,
|
|
187
|
-
yesterdayToPicker,
|
|
188
|
-
formatFromPicker,
|
|
189
|
-
formatEpochToVariable,
|
|
190
|
-
getOffsetUser,
|
|
191
|
-
getOffsetMachine,
|
|
62
|
+
getUserOffset,
|
|
63
|
+
getUserOffsetName,
|
|
64
|
+
getMachineOffset,
|
|
65
|
+
getMachineOffsetName,
|
|
192
66
|
getOffsetDifference,
|
|
193
|
-
getOffsetUserChart,
|
|
194
|
-
getOffsetMachineChart
|
|
195
67
|
};
|
|
196
68
|
}
|
package/composables/index.ts
CHANGED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { addMilliseconds, format, parse, subDays } from "date-fns";
|
|
2
|
+
|
|
3
|
+
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
4
|
+
import { ISO_FORMAT, OPTIONS } from "@dative-gpi/foundation-shared-domain/tools";
|
|
5
|
+
|
|
6
|
+
import { useAppLanguageCode, useAppTimeZone } from "./app/";
|
|
7
|
+
|
|
8
|
+
export const useDateFormat = () => {
|
|
9
|
+
const { $tr } = useTranslationsProvider();
|
|
10
|
+
|
|
11
|
+
const { languageCode } = useAppLanguageCode();
|
|
12
|
+
const { timeZone, getOffsetDifference, getMachineOffset, getUserOffset } = useAppTimeZone();
|
|
13
|
+
|
|
14
|
+
const isEpochToday = (value: number | null | undefined): boolean => {
|
|
15
|
+
if (value == null || !isFinite(value)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const date = new Date(value);
|
|
19
|
+
const now = new Date();
|
|
20
|
+
return date.toLocaleString(languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value })
|
|
21
|
+
=== now.toLocaleString(languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value });
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const isEpochYesterday = (value: number | null | undefined): boolean => {
|
|
25
|
+
if (value == null || !isFinite(value)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
const date = new Date(value);
|
|
29
|
+
const now = new Date();
|
|
30
|
+
return date.toLocaleString(languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value })
|
|
31
|
+
=== subDays(now, 1).toLocaleString(languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value });
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const epochToShortDateFormat = (value: number | null | undefined): string => {
|
|
35
|
+
if (value == null || !isFinite(value)) {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
const date = new Date(value);
|
|
39
|
+
return date.toLocaleString(languageCode.value, { ...OPTIONS.shortDate, timeZone: timeZone.value });
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const epochToLongDateFormat = (value: number | null | undefined): string => {
|
|
43
|
+
if (value == null || !isFinite(value)) {
|
|
44
|
+
return "";
|
|
45
|
+
}
|
|
46
|
+
const date = new Date(value);
|
|
47
|
+
if (isEpochToday(value)) {
|
|
48
|
+
return $tr("ui.time-zone.today", "Today");
|
|
49
|
+
}
|
|
50
|
+
if (isEpochYesterday(value)) {
|
|
51
|
+
return $tr("ui.time-zone.yesterday", "Yesterday");
|
|
52
|
+
}
|
|
53
|
+
const dateString = date.toLocaleString(languageCode.value, { ...OPTIONS.longDate, timeZone: timeZone.value });
|
|
54
|
+
return dateString[0].toLocaleUpperCase() + dateString.slice(1);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const epochToShortTimeFormat = (value: number | null | undefined): string => {
|
|
58
|
+
if (value == null || !isFinite(value)) {
|
|
59
|
+
return "";
|
|
60
|
+
}
|
|
61
|
+
const date = new Date(value);
|
|
62
|
+
return date.toLocaleString(languageCode.value, { ...OPTIONS.shortTime, timeZone: timeZone.value });
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const epochToLongTimeFormat = (value: number | null | undefined): string => {
|
|
66
|
+
if (value == null || !isFinite(value)) {
|
|
67
|
+
return "";
|
|
68
|
+
}
|
|
69
|
+
const date = new Date(value);
|
|
70
|
+
if (isEpochToday(value)) {
|
|
71
|
+
return `${$tr("ui.time-zone.today-at", "Today at")} ${date.toLocaleString(languageCode.value, { ...OPTIONS.time, timeZone: timeZone.value })}`;
|
|
72
|
+
}
|
|
73
|
+
if (isEpochYesterday(value)) {
|
|
74
|
+
return `${$tr("ui.time-zone.yesterday-at", "Yesterday at")} ${date.toLocaleString(languageCode.value, { ...OPTIONS.time, timeZone: timeZone.value })}`;
|
|
75
|
+
}
|
|
76
|
+
const dateString = date.toLocaleString(languageCode.value, { ...OPTIONS.longTime, timeZone: timeZone.value });
|
|
77
|
+
return dateString[0].toLocaleUpperCase() + dateString.slice(1);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const epochToTimeOnlyFormat = (value: number | null | undefined): string => {
|
|
81
|
+
if (value == null || !isFinite(value)) {
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
const date = new Date(value);
|
|
85
|
+
return date.toLocaleString(languageCode.value, { ...OPTIONS.time, timeZone: timeZone.value });
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const todayToEpoch = (): number => {
|
|
89
|
+
return new Date().getTime() + getOffsetDifference();
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const pickerToEpoch = (value: Date | null | undefined): number => {
|
|
93
|
+
if (value != null) {
|
|
94
|
+
return value.getTime() - getOffsetDifference();
|
|
95
|
+
}
|
|
96
|
+
return 0;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const epochToPicker = (value: number | null | undefined): Date => {
|
|
100
|
+
if (value != null) {
|
|
101
|
+
return new Date(value + getOffsetDifference());
|
|
102
|
+
}
|
|
103
|
+
return new Date(0);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const epochToPickerHeader = (value: number): { d: number, m: number, y: number } => {
|
|
107
|
+
const date = epochToPicker(value);
|
|
108
|
+
return { d: date.getDate(), m: date.getMonth(), y: date.getFullYear() };
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
const todayToPicker = (): string => {
|
|
112
|
+
const date = addMilliseconds(new Date(), -getMachineOffset());
|
|
113
|
+
date.setSeconds(0, 0);
|
|
114
|
+
return format(date, ISO_FORMAT);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const yesterdayToPicker = (): string => {
|
|
118
|
+
const date = addMilliseconds(subDays(new Date(), 1), -getMachineOffset());
|
|
119
|
+
date.setSeconds(0, 0);
|
|
120
|
+
return format(date, ISO_FORMAT);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const parseForPicker = (value: string, dateFormat: string = ISO_FORMAT): number | null => {
|
|
124
|
+
const date = addMilliseconds(parse(value, dateFormat, new Date()), getUserOffset());
|
|
125
|
+
if (!isFinite(date.getTime())) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
return date.getTime();
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
const epochToISO = (date: number | null): string => {
|
|
132
|
+
if (date != null) {
|
|
133
|
+
return format(date - getMachineOffset(), ISO_FORMAT);
|
|
134
|
+
}
|
|
135
|
+
return "";
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
todayToEpoch,
|
|
140
|
+
pickerToEpoch,
|
|
141
|
+
epochToPicker,
|
|
142
|
+
epochToPickerHeader,
|
|
143
|
+
epochToLongDateFormat,
|
|
144
|
+
epochToLongTimeFormat,
|
|
145
|
+
epochToShortDateFormat,
|
|
146
|
+
epochToShortTimeFormat,
|
|
147
|
+
epochToTimeOnlyFormat,
|
|
148
|
+
parseForPicker,
|
|
149
|
+
todayToPicker,
|
|
150
|
+
yesterdayToPicker,
|
|
151
|
+
epochToISO
|
|
152
|
+
};
|
|
153
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dative-gpi/foundation-shared-services",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.42",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"author": "",
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@dative-gpi/foundation-shared-domain": "1.0.
|
|
13
|
+
"@dative-gpi/foundation-shared-domain": "1.0.42"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
16
|
"@dative-gpi/bones-ui": "^0.0.75",
|
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
"vue": "^3.4.29",
|
|
19
19
|
"vue-router": "^4.3.0"
|
|
20
20
|
},
|
|
21
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "0c0ad1947f4b469307f0e9a5c636b4d5df11c589"
|
|
22
22
|
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { computed, ref } from "vue";
|
|
2
|
-
|
|
3
|
-
const jwt = ref<string | undefined>(undefined);
|
|
4
|
-
|
|
5
|
-
export const useExtensionJwt = () => {
|
|
6
|
-
const setExtensionJwt = (payload: string) => {
|
|
7
|
-
jwt.value = payload;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const ready = computed(() => jwt.value !== null);
|
|
11
|
-
|
|
12
|
-
return {
|
|
13
|
-
jwt,
|
|
14
|
-
ready,
|
|
15
|
-
setExtensionJwt
|
|
16
|
-
};
|
|
17
|
-
}
|