You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.ts 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import './templates.js'
  2. import './legacy/filelistSearch.js'
  3. import './actions/deleteAction'
  4. import './actions/downloadAction'
  5. import './actions/editLocallyAction'
  6. import './actions/favoriteAction'
  7. import './actions/inlineSystemTagsAction'
  8. import './actions/openFolderAction'
  9. import './actions/openInFilesAction.js'
  10. import './actions/renameAction'
  11. import './actions/sidebarAction'
  12. import './actions/viewInFolderAction'
  13. import './newMenu/newFolder'
  14. import Vue from 'vue'
  15. import { createPinia, PiniaVuePlugin } from 'pinia'
  16. import { getNavigation } from '@nextcloud/files'
  17. import { getRequestToken } from '@nextcloud/auth'
  18. import FilesListView from './views/FilesList.vue'
  19. import NavigationView from './views/Navigation.vue'
  20. import registerFavoritesView from './views/favorites'
  21. import registerRecentView from './views/recent'
  22. import registerFilesView from './views/files'
  23. import registerPreviewServiceWorker from './services/ServiceWorker.js'
  24. import router from './router/router'
  25. import RouterService from './services/RouterService'
  26. import SettingsModel from './models/Setting.js'
  27. import SettingsService from './services/Settings.js'
  28. // @ts-expect-error __webpack_nonce__ is injected by webpack
  29. __webpack_nonce__ = btoa(getRequestToken())
  30. declare global {
  31. interface Window {
  32. OC: any;
  33. OCA: any;
  34. OCP: any;
  35. }
  36. }
  37. // Init private and public Files namespace
  38. window.OCA.Files = window.OCA.Files ?? {}
  39. window.OCP.Files = window.OCP.Files ?? {}
  40. // Expose router
  41. const Router = new RouterService(router)
  42. Object.assign(window.OCP.Files, { Router })
  43. // Init Pinia store
  44. Vue.use(PiniaVuePlugin)
  45. const pinia = createPinia()
  46. // Init Navigation Service
  47. const Navigation = getNavigation()
  48. Vue.prototype.$navigation = Navigation
  49. // Init Files App Settings Service
  50. const Settings = new SettingsService()
  51. Object.assign(window.OCA.Files, { Settings })
  52. Object.assign(window.OCA.Files.Settings, { Setting: SettingsModel })
  53. // Init Navigation View
  54. const View = Vue.extend(NavigationView)
  55. const FilesNavigationRoot = new View({
  56. name: 'FilesNavigationRoot',
  57. propsData: {
  58. Navigation,
  59. },
  60. router,
  61. pinia,
  62. })
  63. FilesNavigationRoot.$mount('#app-navigation-files')
  64. // Init content list view
  65. const ListView = Vue.extend(FilesListView)
  66. const FilesList = new ListView({
  67. name: 'FilesListRoot',
  68. router,
  69. pinia,
  70. })
  71. FilesList.$mount('#app-content-vue')
  72. // Init legacy and new files views
  73. registerFavoritesView()
  74. registerFilesView()
  75. registerRecentView()
  76. // Register preview service worker
  77. registerPreviewServiceWorker()