Skip to content

Commit c05159d

Browse files
committed
lazy load custom pickers and reference widgets
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
1 parent a7da020 commit c05159d

File tree

4 files changed

+22
-13
lines changed

4 files changed

+22
-13
lines changed

lib/Listener/ReplicateReferenceListener.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@ public function handle(Event $event): void {
3434
return;
3535
}
3636

37-
Util::addScript(Application::APP_ID, Application::APP_ID . '-referenceReplicate');
37+
Util::addScript(Application::APP_ID, Application::APP_ID . '-reference');
3838
}
3939
}
Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ import {
2424
registerCustomPickerElement,
2525
CustomPickerRenderResult,
2626
} from '@nextcloud/vue-richtext'
27-
import './bootstrap.js'
28-
import Vue from 'vue'
29-
import ImageReferenceWidget from './views/ImageReferenceWidget.vue'
30-
import ImageCustomPickerElement from './views/ImageCustomPickerElement.vue'
31-
import WhisperReferenceWidget from './views/WhisperReferenceWidget.vue'
32-
import WhisperCustomPickerElement from './views/WhisperCustomPickerElement.vue'
3327

34-
registerWidget('integration_replicate_image', (el, { richObjectType, richObject, accessible }) => {
28+
__webpack_nonce__ = btoa(OC.requestToken) // eslint-disable-line
29+
__webpack_public_path__ = OC.linkTo('integration_replicate', 'js/') // eslint-disable-line
30+
31+
registerWidget('integration_replicate_image', async (el, { richObjectType, richObject, accessible }) => {
32+
const { default: Vue } = await import(/* webpackChunkName: "vue-lazy" */'vue')
33+
Vue.mixin({ methods: { t, n } })
34+
const { default: ImageReferenceWidget } = await import(/* webpackChunkName: "reference-image-lazy" */'./views/ImageReferenceWidget.vue')
3535
const Widget = Vue.extend(ImageReferenceWidget)
3636
new Widget({
3737
propsData: {
@@ -42,7 +42,10 @@ registerWidget('integration_replicate_image', (el, { richObjectType, richObject,
4242
}).$mount(el)
4343
})
4444

45-
registerCustomPickerElement('replicate-image', (el, { providerId, accessible }) => {
45+
registerCustomPickerElement('replicate-image', async (el, { providerId, accessible }) => {
46+
const { default: Vue } = await import(/* webpackChunkName: "vue-lazy" */'vue')
47+
Vue.mixin({ methods: { t, n } })
48+
const { default: ImageCustomPickerElement } = await import(/* webpackChunkName: "picker-image-lazy" */'./views/ImageCustomPickerElement.vue')
4649
const Element = Vue.extend(ImageCustomPickerElement)
4750
const vueElement = new Element({
4851
propsData: {
@@ -56,7 +59,10 @@ registerCustomPickerElement('replicate-image', (el, { providerId, accessible })
5659
renderResult.object.$destroy()
5760
})
5861

59-
registerWidget('integration_replicate_whisper', (el, { richObjectType, richObject, accessible }) => {
62+
registerWidget('integration_replicate_whisper', async (el, { richObjectType, richObject, accessible }) => {
63+
const { default: Vue } = await import(/* webpackChunkName: "vue-lazy" */'vue')
64+
Vue.mixin({ methods: { t, n } })
65+
const { default: WhisperReferenceWidget } = await import(/* webpackChunkName: "reference-whisper-lazy" */'./views/WhisperReferenceWidget.vue')
6066
const Widget = Vue.extend(WhisperReferenceWidget)
6167
new Widget({
6268
propsData: {
@@ -67,7 +73,10 @@ registerWidget('integration_replicate_whisper', (el, { richObjectType, richObjec
6773
}).$mount(el)
6874
})
6975

70-
registerCustomPickerElement('replicate-whisper', (el, { providerId, accessible }) => {
76+
registerCustomPickerElement('replicate-whisper', async (el, { providerId, accessible }) => {
77+
const { default: Vue } = await import(/* webpackChunkName: "vue-lazy" */'vue')
78+
Vue.mixin({ methods: { t, n } })
79+
const { default: WhisperCustomPickerElement } = await import(/* webpackChunkName: "picker-whisper-lazy" */'./views/WhisperCustomPickerElement.vue')
7180
const Element = Vue.extend(WhisperCustomPickerElement)
7281
const vueElement = new Element({
7382
propsData: {

src/views/WhisperCustomPickerElement.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ export default {
160160
.then((response) => {
161161
console.debug('predictions response', response.data)
162162
if (!['failed', 'canceled'].includes(response.data.status)) {
163-
if (this.type === 'link') {
163+
if (this.type.value === 'link') {
164164
const internalUrl = window.location.protocol + '//' + window.location.host
165165
+ generateUrl('/apps/integration_replicate/w/{id}', { id: response.data.id })
166166
this.onSubmit(internalUrl)

webpack.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ webpackConfig.stats = {
1616
const appId = 'integration_replicate'
1717
webpackConfig.entry = {
1818
adminSettings: { import: path.join(__dirname, 'src', 'adminSettings.js'), filename: appId + '-adminSettings.js' },
19-
referenceReplicate: { import: path.join(__dirname, 'src', 'referenceReplicate.js'), filename: appId + '-referenceReplicate.js' },
19+
reference: { import: path.join(__dirname, 'src', 'reference.js'), filename: appId + '-reference.js' },
2020
imagePredictionPage: { import: path.join(__dirname, 'src', 'imagePredictionPage.js'), filename: appId + '-imagePredictionPage.js' },
2121
whisperPredictionPage: { import: path.join(__dirname, 'src', 'whisperPredictionPage.js'), filename: appId + '-whisperPredictionPage.js' },
2222
}

0 commit comments

Comments
 (0)