aboutsummaryrefslogtreecommitdiffstats
path: root/apps/comments/src/services/CommentsInstance.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/comments/src/services/CommentsInstance.js')
-rw-r--r--apps/comments/src/services/CommentsInstance.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/apps/comments/src/services/CommentsInstance.js b/apps/comments/src/services/CommentsInstance.js
new file mode 100644
index 00000000000..cc45d0cbea7
--- /dev/null
+++ b/apps/comments/src/services/CommentsInstance.js
@@ -0,0 +1,55 @@
+/**
+ * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+import { getCSPNonce } from '@nextcloud/auth'
+import { t, n } from '@nextcloud/l10n'
+import { PiniaVuePlugin, createPinia } from 'pinia'
+import Vue from 'vue'
+import CommentsApp from '../views/Comments.vue'
+import logger from '../logger.js'
+
+Vue.use(PiniaVuePlugin)
+// eslint-disable-next-line camelcase
+__webpack_nonce__ = getCSPNonce()
+
+// Add translates functions
+Vue.mixin({
+ data() {
+ return {
+ logger,
+ }
+ },
+ methods: {
+ t,
+ n,
+ },
+})
+
+export default class CommentInstance {
+
+ /**
+ * Initialize a new Comments instance for the desired type
+ *
+ * @param {string} resourceType the comments endpoint type
+ * @param {object} options the vue options (propsData, parent, el...)
+ */
+ constructor(resourceType = 'files', options = {}) {
+ const pinia = createPinia()
+
+ // Merge options and set `resourceType` property
+ options = {
+ ...options,
+ propsData: {
+ ...(options.propsData ?? {}),
+ resourceType,
+ },
+ pinia,
+ }
+ // Init Comments component
+ const View = Vue.extend(CommentsApp)
+ return new View(options)
+ }
+
+}