feat(admin): migrate nav + auth to vue 3 composition, convert lodash to lodash-es

parent 8fb29cfc
...@@ -69,6 +69,7 @@ ...@@ -69,6 +69,7 @@
"js-cookie": "3.0.1", "js-cookie": "3.0.1",
"jwt-decode": "3.1.2", "jwt-decode": "3.1.2",
"lodash": "4.17.21", "lodash": "4.17.21",
"lodash-es": "4.17.21",
"luxon": "2.4.0", "luxon": "2.4.0",
"pinia": "2.0.14", "pinia": "2.0.14",
"pug": "3.0.2", "pug": "3.0.2",
......
...@@ -95,7 +95,7 @@ q-layout.admin(view='hHh Lpr lff') ...@@ -95,7 +95,7 @@ q-layout.admin(view='hHh Lpr lff')
q-item-section(avatar) q-item-section(avatar)
q-icon(name='img:/_assets/icons/fluent-tree-structure.svg') q-icon(name='img:/_assets/icons/fluent-tree-structure.svg')
q-item-section {{ t('admin.navigation.title') }} q-item-section {{ t('admin.navigation.title') }}
q-item(:to='`/_admin/` + adminStore.currentSiteId + `/rendering`', v-ripple, active-class='bg-primary text-white') q-item(:to='`/_admin/` + adminStore.currentSiteId + `/rendering`', v-ripple, active-class='bg-primary text-white', disabled)
q-item-section(avatar) q-item-section(avatar)
q-icon(name='img:/_assets/icons/fluent-rich-text-converter.svg') q-icon(name='img:/_assets/icons/fluent-rich-text-converter.svg')
q-item-section {{ t('admin.rendering.title') }} q-item-section {{ t('admin.rendering.title') }}
......
...@@ -116,7 +116,7 @@ q-page.admin-api ...@@ -116,7 +116,7 @@ q-page.admin-api
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
import { computed, onMounted, reactive, watch } from 'vue' import { computed, onMounted, reactive, watch } from 'vue'
......
...@@ -99,7 +99,7 @@ q-page.admin-extensions ...@@ -99,7 +99,7 @@ q-page.admin-extensions
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
import { computed, onMounted, reactive, watch } from 'vue' import { computed, onMounted, reactive, watch } from 'vue'
......
...@@ -82,7 +82,7 @@ q-page.admin-flags ...@@ -82,7 +82,7 @@ q-page.admin-flags
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import { defineAsyncComponent, onMounted, reactive, ref, watch } from 'vue' import { defineAsyncComponent, onMounted, reactive, ref, watch } from 'vue'
import _transform from 'lodash/transform' import { transform } from 'lodash-es'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
......
...@@ -391,7 +391,7 @@ q-page.admin-general ...@@ -391,7 +391,7 @@ q-page.admin-general
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
import { onMounted, reactive, watch } from 'vue' import { onMounted, reactive, watch } from 'vue'
......
...@@ -93,7 +93,7 @@ q-page.admin-groups ...@@ -93,7 +93,7 @@ q-page.admin-groups
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
import { computed, onBeforeUnmount, onMounted, reactive, watch } from 'vue' import { computed, onBeforeUnmount, onMounted, reactive, watch } from 'vue'
......
...@@ -143,9 +143,7 @@ q-page.admin-locale ...@@ -143,9 +143,7 @@ q-page.admin-locale
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import filter from 'lodash/filter' import { cloneDeep, filter } from 'lodash-es'
import _get from 'lodash/get'
import cloneDeep from 'lodash/cloneDeep'
import LocaleInstallDialog from '../components/LocaleInstallDialog.vue' import LocaleInstallDialog from '../components/LocaleInstallDialog.vue'
...@@ -278,7 +276,7 @@ async function download (lc) { ...@@ -278,7 +276,7 @@ async function download (lc) {
locale: lc.code locale: lc.code
} }
}) })
const resp = _get(respRaw, 'data.localization.downloadLocale.responseResult', {}) const resp = respRaw?.data?.localization?.downloadLocale?.responseResult || {}
if (resp.succeeded) { if (resp.succeeded) {
lc.isDownloading = false lc.isDownloading = false
lc.isInstalled = true lc.isInstalled = true
...@@ -331,7 +329,7 @@ async function save () { ...@@ -331,7 +329,7 @@ async function save () {
namespaces: state.namespaces namespaces: state.namespaces
} }
}) })
const resp = _get(respRaw, 'data.localization.updateLocale.responseResult', {}) const resp = respRaw?.data?.localization?.updateLocale?.responseResult || {}
if (resp.succeeded) { if (resp.succeeded) {
// Change UI language // Change UI language
this.$i18n.locale = state.selectedLocale this.$i18n.locale = state.selectedLocale
......
...@@ -176,8 +176,7 @@ q-page.admin-login ...@@ -176,8 +176,7 @@ q-page.admin-login
</template> </template>
<script setup> <script setup>
import { get } from 'vuex-pathify' import { cloneDeep } from 'lodash-es'
import cloneDeep from 'lodash/cloneDeep'
import gql from 'graphql-tag' import gql from 'graphql-tag'
import draggable from 'vuedraggable' import draggable from 'vuedraggable'
......
...@@ -298,9 +298,7 @@ q-page.admin-mail ...@@ -298,9 +298,7 @@ q-page.admin-mail
</template> </template>
<script setup> <script setup>
import toSafeInteger from 'lodash/toSafeInteger' import { cloneDeep, toSafeInteger } from 'lodash-es'
import _get from 'lodash/get'
import cloneDeep from 'lodash/cloneDeep'
import gql from 'graphql-tag' import gql from 'graphql-tag'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
...@@ -477,7 +475,7 @@ async function sendTest () { ...@@ -477,7 +475,7 @@ async function sendTest () {
sendMailTest( sendMailTest(
recipientEmail: $recipientEmail recipientEmail: $recipientEmail
) { ) {
status { operation {
succeeded succeeded
slug slug
message message
...@@ -489,8 +487,8 @@ async function sendTest () { ...@@ -489,8 +487,8 @@ async function sendTest () {
recipientEmail: state.testEmail recipientEmail: state.testEmail
} }
}) })
if (!_get(resp, 'data.sendMailTest.status.succeeded', false)) { if (!resp?.data?.sendMailTest?.operation?.succeeded) {
throw new Error(_get(resp, 'data.sendMailTest.status.message', 'An unexpected error occurred.')) throw new Error(resp?.data?.sendMailTest?.operation?.message || 'An unexpected error occurred.')
} }
state.testEmail = '' state.testEmail = ''
......
...@@ -323,9 +323,8 @@ q-page.admin-mail ...@@ -323,9 +323,8 @@ q-page.admin-mail
</template> </template>
<script setup> <script setup>
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import gql from 'graphql-tag' import gql from 'graphql-tag'
import _get from 'lodash/get'
import filesize from 'filesize' import filesize from 'filesize'
import filesizeParser from 'filesize-parser' import filesizeParser from 'filesize-parser'
...@@ -492,7 +491,7 @@ async function save () { ...@@ -492,7 +491,7 @@ async function save () {
uploadMaxFileSize: filesizeParser(state.humanUploadMaxFileSize || '0') uploadMaxFileSize: filesizeParser(state.humanUploadMaxFileSize || '0')
} }
}) })
const resp = _get(respRaw, 'data.updateSystemSecurity.status', {}) const resp = respRaw?.data?.updateSystemSecurity?.status || {}
if (resp.succeeded) { if (resp.succeeded) {
$q.notify({ $q.notify({
type: 'positive', type: 'positive',
......
...@@ -583,10 +583,8 @@ q-page.admin-storage ...@@ -583,10 +583,8 @@ q-page.admin-storage
</template> </template>
<script setup> <script setup>
import find from 'lodash/find' import { cloneDeep, find, transform } from 'lodash-es'
import cloneDeep from 'lodash/cloneDeep'
import gql from 'graphql-tag' import gql from 'graphql-tag'
import transform from 'lodash/transform'
import * as VNetworkGraph from 'v-network-graph' import * as VNetworkGraph from 'v-network-graph'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
......
...@@ -227,7 +227,7 @@ q-page.admin-system ...@@ -227,7 +227,7 @@ q-page.admin-system
</template> </template>
<script setup> <script setup>
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import gql from 'graphql-tag' import gql from 'graphql-tag'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
......
...@@ -203,8 +203,7 @@ q-page.admin-theme ...@@ -203,8 +203,7 @@ q-page.admin-theme
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep, startCase } from 'lodash-es'
import startCase from 'lodash/startCase'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
import { onMounted, reactive, watch } from 'vue' import { onMounted, reactive, watch } from 'vue'
......
...@@ -106,7 +106,7 @@ q-page.admin-groups ...@@ -106,7 +106,7 @@ q-page.admin-groups
<script setup> <script setup>
import gql from 'graphql-tag' import gql from 'graphql-tag'
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import { DateTime } from 'luxon' import { DateTime } from 'luxon'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useMeta, useQuasar } from 'quasar' import { useMeta, useQuasar } from 'quasar'
......
...@@ -92,7 +92,7 @@ q-page.admin-webhooks ...@@ -92,7 +92,7 @@ q-page.admin-webhooks
</template> </template>
<script setup> <script setup>
import cloneDeep from 'lodash/cloneDeep' import { cloneDeep } from 'lodash-es'
import gql from 'graphql-tag' import gql from 'graphql-tag'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
......
...@@ -35,12 +35,12 @@ const routes = [ ...@@ -35,12 +35,12 @@ const routes = [
{ path: ':siteid/editors', component: () => import('../pages/AdminEditors.vue') }, { path: ':siteid/editors', component: () => import('../pages/AdminEditors.vue') },
{ path: ':siteid/locale', component: () => import('../pages/AdminLocale.vue') }, { path: ':siteid/locale', component: () => import('../pages/AdminLocale.vue') },
{ path: ':siteid/login', component: () => import('../pages/AdminLogin.vue') }, { path: ':siteid/login', component: () => import('../pages/AdminLogin.vue') },
// { path: ':siteid/navigation', component: () => import('../pages/AdminNavigation.vue') }, { path: ':siteid/navigation', component: () => import('../pages/AdminNavigation.vue') },
// { path: ':siteid/rendering', component: () => import('../pages/AdminRendering.vue') }, // { path: ':siteid/rendering', component: () => import('../pages/AdminRendering.vue') },
{ path: ':siteid/storage/:id?', component: () => import('../pages/AdminStorage.vue') }, { path: ':siteid/storage/:id?', component: () => import('../pages/AdminStorage.vue') },
{ path: ':siteid/theme', component: () => import('../pages/AdminTheme.vue') }, { path: ':siteid/theme', component: () => import('../pages/AdminTheme.vue') },
// -> Users // -> Users
// { path: 'auth', component: () => import('../pages/AdminAuth.vue') }, { path: 'auth', component: () => import('../pages/AdminAuth.vue') },
{ path: 'groups/:id?/:section?', component: () => import('../pages/AdminGroups.vue') }, { path: 'groups/:id?/:section?', component: () => import('../pages/AdminGroups.vue') },
{ path: 'users/:id?/:section?', component: () => import('../pages/AdminUsers.vue') }, { path: 'users/:id?/:section?', component: () => import('../pages/AdminUsers.vue') },
// -> System // -> System
......
This diff was suppressed by a .gitattributes entry.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment