@saooti/octopus-sdk 31.0.11 → 31.0.14
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/README.md +3 -0
- package/package.json +26 -32
- package/src/components/display/comments/CommentItem.vue +8 -4
- package/src/components/display/comments/CommentList.vue +17 -30
- package/src/components/display/comments/CommentSection.vue +2 -11
- package/src/components/display/sharing/SharePlayer.vue +1 -1
- package/src/components/display/sharing/SharePlayerColors.vue +1 -0
- package/src/components/misc/Footer.vue +6 -1
- package/src/components/misc/modal/NewsletterModal.vue +1 -0
- package/src/components/pages/Podcast.vue +1 -1
- package/src/i18n.ts +36 -0
- package/src/main.ts +28 -30
package/README.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saooti/octopus-sdk",
|
|
3
|
-
"version": "31.0.
|
|
3
|
+
"version": "31.0.14",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Javascript SDK for using octopus",
|
|
6
6
|
"author": "Saooti",
|
|
@@ -14,51 +14,45 @@
|
|
|
14
14
|
},
|
|
15
15
|
"main": "./dist/octopus.common.js",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@popperjs/core": "^2.11.0",
|
|
18
17
|
"@saooti/octopus-api": "^0.31.2",
|
|
19
|
-
"@vue/cli": "^5.0.
|
|
20
|
-
"@vue/compat": "^3.2.
|
|
18
|
+
"@vue/cli": "^5.0.4",
|
|
19
|
+
"@vue/compat": "^3.2.31",
|
|
21
20
|
"axios": "^0.24.0",
|
|
22
21
|
"bootstrap": "^5.1.3",
|
|
23
|
-
"core-js": "^3.
|
|
24
|
-
"hls.js": "^1.
|
|
25
|
-
"humanize-duration": "^3.27.
|
|
26
|
-
"jquery": "^3.
|
|
27
|
-
"
|
|
28
|
-
"moment": "^2.29.1",
|
|
22
|
+
"core-js": "^3.21.1",
|
|
23
|
+
"hls.js": "^1.1.5",
|
|
24
|
+
"humanize-duration": "^3.27.1",
|
|
25
|
+
"jquery": "^3.5.14",
|
|
26
|
+
"moment": "^2.29.2",
|
|
29
27
|
"moment-locales-webpack-plugin": "^1.2.0",
|
|
30
|
-
"popper.js": "^1.16.1",
|
|
31
28
|
"qrcode.vue": "^3.3.3",
|
|
32
|
-
"sass": "^1.
|
|
33
|
-
"sass-loader": "^12.
|
|
34
|
-
"v-calendar": "^3.0.0-alpha.
|
|
35
|
-
"vue": "^3.2.
|
|
36
|
-
"vue-i18n": "^9.2.0-beta.
|
|
29
|
+
"sass": "^1.49.11",
|
|
30
|
+
"sass-loader": "^12.6.0",
|
|
31
|
+
"v-calendar": "^3.0.0-alpha.8",
|
|
32
|
+
"vue": "^3.2.31",
|
|
33
|
+
"vue-i18n": "^9.2.0-beta.34",
|
|
37
34
|
"vue-multiselect": "^3.0.0-alpha.2",
|
|
38
35
|
"vue-recaptcha-v3": "^2.0.1",
|
|
39
|
-
"vue-router": "^4.0.
|
|
36
|
+
"vue-router": "^4.0.14",
|
|
40
37
|
"vue3-lazyload": "^0.2.5-beta",
|
|
41
|
-
"vue3-swatches": "^1.0.
|
|
38
|
+
"vue3-swatches": "^1.0.7",
|
|
42
39
|
"vuex": "^4.0.2",
|
|
43
|
-
"webpack": "^5.
|
|
40
|
+
"webpack": "^5.71.0"
|
|
44
41
|
},
|
|
45
42
|
"devDependencies": {
|
|
46
43
|
"@types/bootstrap": "^5.1.8",
|
|
47
|
-
"@types/
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@vue/cli-plugin-
|
|
53
|
-
"@vue/cli-
|
|
54
|
-
"@vue/
|
|
55
|
-
"@vue/cli-service": "^5.0.0-rc.1",
|
|
56
|
-
"@vue/compiler-sfc": "^3.2.26",
|
|
44
|
+
"@types/jquery": "^3.5.14",
|
|
45
|
+
"@typescript-eslint/eslint-plugin": "^5.17.0",
|
|
46
|
+
"@typescript-eslint/parser": "^5.17.0",
|
|
47
|
+
"@vue/cli-plugin-babel": "^5.0.4",
|
|
48
|
+
"@vue/cli-plugin-eslint": "^5.0.4",
|
|
49
|
+
"@vue/cli-plugin-typescript": "^5.0.4",
|
|
50
|
+
"@vue/cli-service": "^5.0.4",
|
|
51
|
+
"@vue/compiler-sfc": "^3.2.31",
|
|
57
52
|
"@vue/eslint-config-typescript": "^8.0.0",
|
|
58
|
-
"
|
|
59
|
-
"eslint": "^8.2.0",
|
|
53
|
+
"eslint": "^8.12.0",
|
|
60
54
|
"eslint-plugin-vue": "^7.20.0",
|
|
61
|
-
"typescript": "^4.
|
|
55
|
+
"typescript": "^4.6.3"
|
|
62
56
|
},
|
|
63
57
|
"eslintConfig": {
|
|
64
58
|
"parser": "vue-eslint-parser",
|
|
@@ -267,18 +267,22 @@ export default defineComponent({
|
|
|
267
267
|
}
|
|
268
268
|
this.$emit('update:comment', updatedComment);
|
|
269
269
|
},
|
|
270
|
-
receiveCommentEvent(event: {type
|
|
270
|
+
receiveCommentEvent(event: {type: string; comment: CommentPodcast; oldStatus?:string }): void {
|
|
271
271
|
switch (event.type) {
|
|
272
272
|
case 'Create':this.newComment(event.comment, true);break;
|
|
273
273
|
case 'Update':
|
|
274
274
|
if (this.$refs.commentList) {
|
|
275
|
-
(this.$refs.commentList as InstanceType<typeof CommentList>).updateComment(
|
|
275
|
+
(this.$refs.commentList as InstanceType<typeof CommentList>).updateComment(event);
|
|
276
276
|
} else {
|
|
277
277
|
const updatedComment = this.comment;
|
|
278
|
+
let updatedStatus = "";
|
|
279
|
+
if (event.comment.status && event.comment.status !== event.oldStatus) {
|
|
280
|
+
updatedStatus = event.comment.status;
|
|
281
|
+
}
|
|
278
282
|
if(undefined !== updatedComment.relatedValidComments){
|
|
279
|
-
if ('Invalid' ===
|
|
283
|
+
if ('Invalid' ===updatedStatus) {
|
|
280
284
|
updatedComment.relatedValidComments -= 1;
|
|
281
|
-
} else if ('Valid' ===
|
|
285
|
+
} else if ('Valid' === updatedStatus) {
|
|
282
286
|
updatedComment.relatedValidComments += 1;
|
|
283
287
|
}
|
|
284
288
|
}
|
|
@@ -179,49 +179,36 @@ export default defineComponent({
|
|
|
179
179
|
}
|
|
180
180
|
this.comments.splice(index, 1);
|
|
181
181
|
},
|
|
182
|
-
updateComment(data: {type
|
|
182
|
+
updateComment(data: {type: string; comment: CommentPodcast; oldStatus?:string }): void {
|
|
183
183
|
if (this.commentIsNotInList(data.comment.commentIdReferer)){
|
|
184
184
|
const comItem = (this.$refs['comItem' + data.comment.commentIdReferer] as Array<InstanceType<typeof CommentItem>>)[0];
|
|
185
|
-
comItem.receiveCommentEvent(
|
|
185
|
+
comItem.receiveCommentEvent(data);
|
|
186
186
|
return;
|
|
187
187
|
}
|
|
188
188
|
const index = this.findCommentIndex(data.comment.comId);
|
|
189
189
|
if (-1 !== index) {
|
|
190
|
-
if ('Valid' !== data.status
|
|
191
|
-
(
|
|
192
|
-
) {
|
|
190
|
+
if ((!this.editRight && 'Valid' !== data.comment.status) ||
|
|
191
|
+
(this.editRight && this.status && this.status !== data.comment.status)) {
|
|
193
192
|
this.comments.splice(index, 1);
|
|
194
193
|
} else {
|
|
195
194
|
this.comments.splice(index, 1, data.comment);
|
|
196
195
|
}
|
|
197
|
-
}else if
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
break;
|
|
208
|
-
}
|
|
196
|
+
}else if((!this.editRight && 'Valid' === data.comment.status) ||
|
|
197
|
+
(this.editRight && !this.status) ||
|
|
198
|
+
(this.editRight && this.status && this.status === data.comment.status)){
|
|
199
|
+
let indexNewComment = 0;
|
|
200
|
+
for (let i = 0, len = this.comments.length; i < len; i++) {
|
|
201
|
+
if (
|
|
202
|
+
moment(this.comments[i].date).isBefore(moment(data.comment.date))
|
|
203
|
+
) {
|
|
204
|
+
indexNewComment = i;
|
|
205
|
+
break;
|
|
209
206
|
}
|
|
210
|
-
if (-1 !== indexNewComment) {
|
|
211
|
-
if (!this.status || this.status === data.status) {
|
|
212
|
-
this.comments.splice(indexNewComment, 0, data.comment);
|
|
213
|
-
} /* else {
|
|
214
|
-
this.comments.splice(indexNewComment, 1);
|
|
215
|
-
} */
|
|
216
|
-
} else if (!this.status || this.status === data.status) {
|
|
217
|
-
this.comments.push(data.comment);
|
|
218
|
-
}
|
|
219
|
-
} else if (!this.status || this.status === data.status) {
|
|
220
|
-
this.comments.unshift(data.comment);
|
|
221
207
|
}
|
|
208
|
+
this.comments.splice(indexNewComment, 0, data.comment);
|
|
222
209
|
}
|
|
223
|
-
if (this.comId && data.status) {
|
|
224
|
-
this.$emit('updateStatus', data.status);
|
|
210
|
+
if (this.comId && data.oldStatus!==data.comment.status) {
|
|
211
|
+
this.$emit('updateStatus', data.comment.status);
|
|
225
212
|
}
|
|
226
213
|
},
|
|
227
214
|
addNewComment(comment: CommentPodcast, myself = false): void {
|
|
@@ -129,20 +129,11 @@ export default defineComponent({
|
|
|
129
129
|
newComment(comment: CommentPodcast): void {
|
|
130
130
|
(this.$refs.commentList as InstanceType<typeof CommentListVue>).addNewComment(comment, true);
|
|
131
131
|
},
|
|
132
|
-
receiveCommentEvent(event: {type
|
|
132
|
+
receiveCommentEvent(event: {type: string; comment: CommentPodcast; oldStatus?:string }): void {
|
|
133
133
|
const commentList = (this.$refs.commentList as InstanceType<typeof CommentListVue>);
|
|
134
|
-
let statusUpdated = undefined;
|
|
135
134
|
switch (event.type) {
|
|
136
135
|
case 'Create':commentList.addNewComment(event.comment);break;
|
|
137
|
-
case 'Update':
|
|
138
|
-
if (event.comment.status !== event.oldStatus) {
|
|
139
|
-
statusUpdated = event.comment.status;
|
|
140
|
-
}
|
|
141
|
-
commentList.updateComment({
|
|
142
|
-
comment: event.comment,
|
|
143
|
-
status: statusUpdated,
|
|
144
|
-
});
|
|
145
|
-
break;
|
|
136
|
+
case 'Update':commentList.updateComment(event);break;
|
|
146
137
|
case 'Delete':commentList.deleteComment(event.comment);break;
|
|
147
138
|
default:break;
|
|
148
139
|
}
|
|
@@ -142,9 +142,11 @@
|
|
|
142
142
|
</template>
|
|
143
143
|
|
|
144
144
|
<script lang="ts">
|
|
145
|
+
import { cookies } from '../mixins/functions';
|
|
145
146
|
import ClassicSelect from '../form/ClassicSelect.vue';
|
|
146
147
|
import Player from './Player.vue';
|
|
147
148
|
import { state } from '../../store/paramStore';
|
|
149
|
+
import {loadLocaleMessages} from '@/i18n';
|
|
148
150
|
import octopusApi from '@saooti/octopus-api';
|
|
149
151
|
import moment from 'moment';
|
|
150
152
|
import { Category } from '@/store/class/general/category';
|
|
@@ -157,6 +159,8 @@ export default defineComponent({
|
|
|
157
159
|
ClassicSelect
|
|
158
160
|
},
|
|
159
161
|
|
|
162
|
+
mixins:[cookies],
|
|
163
|
+
|
|
160
164
|
data() {
|
|
161
165
|
return {
|
|
162
166
|
language: this.$i18n.locale as string,
|
|
@@ -199,7 +203,8 @@ export default defineComponent({
|
|
|
199
203
|
}
|
|
200
204
|
},
|
|
201
205
|
changeLanguage(): void{
|
|
202
|
-
this
|
|
206
|
+
this.setCookie('octopus-language', this.language);
|
|
207
|
+
loadLocaleMessages(this.$i18n, this.language, this.$store.state.general.isEducation);
|
|
203
208
|
moment.locale(this.$i18n.locale);
|
|
204
209
|
octopusApi.fetchCategories({ lang: this.$i18n.locale }).then((data: Array<Category>) => {
|
|
205
210
|
this.$store.commit('categoriesSet', data);
|
|
@@ -91,6 +91,7 @@
|
|
|
91
91
|
import ClassicCheckbox from '../../form/ClassicCheckbox.vue';
|
|
92
92
|
import Snackbar from '../../misc/Snackbar.vue';
|
|
93
93
|
import moment from 'moment';
|
|
94
|
+
// @ts-ignore
|
|
94
95
|
import VSwatches from 'vue3-swatches';
|
|
95
96
|
// @ts-ignore
|
|
96
97
|
import humanizeDuration from 'humanize-duration';
|
|
@@ -376,7 +376,7 @@ export default defineComponent({
|
|
|
376
376
|
this.$router.push('/');
|
|
377
377
|
}
|
|
378
378
|
},
|
|
379
|
-
receiveCommentEvent(event:{type
|
|
379
|
+
receiveCommentEvent(event:{type: string; comment: CommentPodcast; oldStatus?:string } ): void {
|
|
380
380
|
(this.$refs.commentSection as InstanceType<typeof CommentSectionVue>).receiveCommentEvent(event);
|
|
381
381
|
},
|
|
382
382
|
},
|
package/src/i18n.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
|
|
2
|
+
import { nextTick } from 'vue'
|
|
3
|
+
import { createI18n } from 'vue-i18n';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
export function setupI18n(options = { locale: 'en' }, isEducation: boolean) {
|
|
7
|
+
const i18n = createI18n(options)
|
|
8
|
+
loadLocaleMessages(i18n.global, options.locale, isEducation);
|
|
9
|
+
return i18n;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function setI18nLanguage(i18n: any, locale: string) {
|
|
13
|
+
i18n.locale = locale;
|
|
14
|
+
const html= document.querySelector('html');
|
|
15
|
+
if(html){
|
|
16
|
+
html.setAttribute('lang', locale);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export async function loadLocaleMessages(i18n: any, locale:string, isEducation: boolean) {
|
|
21
|
+
if(!i18n.messages[locale] || 0===Object.keys(i18n.messages[locale]).length){
|
|
22
|
+
let messages = await import(
|
|
23
|
+
`./locale/${locale}.ts`
|
|
24
|
+
)
|
|
25
|
+
messages = messages.default;
|
|
26
|
+
if(isEducation && ('fr'===locale || 'en'===locale)){
|
|
27
|
+
const messagesEdu = await import(
|
|
28
|
+
`./locale/education${locale}.ts`
|
|
29
|
+
);
|
|
30
|
+
messages ={...messages, ...messagesEdu.default};
|
|
31
|
+
}
|
|
32
|
+
i18n.setLocaleMessage(locale, messages);
|
|
33
|
+
}
|
|
34
|
+
setI18nLanguage(i18n, locale)
|
|
35
|
+
return nextTick();
|
|
36
|
+
}
|
package/src/main.ts
CHANGED
|
@@ -2,50 +2,48 @@ import { createApp } from 'vue';
|
|
|
2
2
|
import { VueReCaptcha } from 'vue-recaptcha-v3';
|
|
3
3
|
import VueLazyLoad from 'vue3-lazyload';
|
|
4
4
|
import App from './App.vue';
|
|
5
|
-
import {
|
|
6
|
-
import I18nResources from './locale/messages';
|
|
5
|
+
import {setupI18n} from './i18n';
|
|
7
6
|
import router from '@/router/router';
|
|
8
7
|
import moment from 'moment';
|
|
9
8
|
import store from '@/store/AppStore';
|
|
10
9
|
import paramStore from '@/store/paramStore';
|
|
11
|
-
import { LocaleMessage } from '@intlify/core-base';
|
|
12
10
|
/* import 'popper.js/dist/popper.min.js'; */
|
|
13
11
|
/* import 'jquery/src/jquery.js'; */
|
|
14
12
|
/* import 'jquery';
|
|
15
13
|
import 'bootstrap/dist/js/bootstrap.bundle.min.js';
|
|
16
14
|
*/
|
|
17
15
|
|
|
16
|
+
|
|
18
17
|
//TODO
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}else if(navigatorLang.includes('de')){
|
|
30
|
-
language = 'de';
|
|
18
|
+
const nameEQ = 'octopus-language=';
|
|
19
|
+
const ca = document.cookie.split(';');
|
|
20
|
+
let language = "";
|
|
21
|
+
for (let i = 0; i < ca.length; i++) {
|
|
22
|
+
let c = ca[i];
|
|
23
|
+
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
|
|
24
|
+
if (0 === c.indexOf(nameEQ)){
|
|
25
|
+
language = c.substring(nameEQ.length, c.length);
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
31
28
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
29
|
+
if(0===language.length){
|
|
30
|
+
const navigatorLang = navigator.language /* || navigator.userLanguage */;
|
|
31
|
+
language = 'fr';
|
|
32
|
+
if(navigatorLang.includes('en')){
|
|
33
|
+
language = 'en';
|
|
34
|
+
}else if(navigatorLang.includes('it')){
|
|
35
|
+
language = 'it';
|
|
36
|
+
}else if(navigatorLang.includes('sl')){
|
|
37
|
+
language = 'sl';
|
|
38
|
+
}else if(navigatorLang.includes('es')){
|
|
39
|
+
language = 'es';
|
|
40
|
+
}else if(navigatorLang.includes('de')){
|
|
41
|
+
language = 'de';
|
|
42
|
+
}
|
|
42
43
|
}
|
|
43
|
-
const i18n = createI18n({
|
|
44
|
-
locale: language,
|
|
45
|
-
messages: messages,
|
|
46
|
-
});
|
|
47
|
-
moment.locale(language);
|
|
48
44
|
|
|
45
|
+
const i18n = setupI18n({locale: language}, store.state.general.education);
|
|
46
|
+
moment.locale(language);
|
|
49
47
|
|
|
50
48
|
paramStore.initialize({
|
|
51
49
|
generalParameters: {},
|