Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: moves resources to pinia store #10368

Merged
merged 1 commit into from
Jan 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions changelog/unreleased/change-resources-store
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Change: Resources store to pinia

BREAKING CHANGE for developers: Resources are no longer stored in a vuex store module but in pinia instead. You can access all the store functionality via the new `useResourcesStore` composable.

Technically the former vuex store was only supposed to be used inside the files app. However, it was reachable from the outside as well and was therefore quite frequently used by other apps. So we decided to declare this as a breaking change.

For more details please see the linked PR down below.

https://github.com/owncloud/web/pull/10368
https://github.com/owncloud/web/issues/10210
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import { computed, defineComponent, PropType, unref } from 'vue'
import { SpaceResource } from '@ownclouders/web-client'
import { ContextActionMenu } from '@ownclouders/web-pkg'
import { useStore } from '@ownclouders/web-pkg'

import {
useSpaceActionsDelete,
Expand All @@ -30,10 +29,9 @@ export default defineComponent({
}
},
setup(props) {
const store = useStore()
const filterParams = computed(() => ({ resources: props.items }))

const { actions: deleteActions } = useSpaceActionsDelete({ store })
const { actions: deleteActions } = useSpaceActionsDelete()
const { actions: disableActions } = useSpaceActionsDisable()
const { actions: editQuotaActions } = useSpaceActionsEditQuota()
const { actions: editDescriptionActions } = useSpaceActionsEditDescription()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,11 @@ import {
} from '@ownclouders/web-pkg'
import { computed, defineComponent, inject, unref } from 'vue'
import { SpaceResource } from '@ownclouders/web-client'
import { useStore } from '@ownclouders/web-pkg'

export default defineComponent({
name: 'ActionsPanel',
components: { ActionMenuItem },
setup() {
const store = useStore()
const resource = inject<SpaceResource>('resource')
const resources = computed(() => {
return [unref(resource)]
Expand All @@ -39,7 +37,7 @@ export default defineComponent({
resources: unref(resources)
}))

const { actions: deleteActions } = useSpaceActionsDelete({ store })
const { actions: deleteActions } = useSpaceActionsDelete()
const { actions: disableActions } = useSpaceActionsDisable()
const { actions: editDescriptionActions } = useSpaceActionsEditDescription()
const { actions: editQuotaActions } = useSpaceActionsEditQuota()
Expand Down
4 changes: 1 addition & 3 deletions packages/web-app-admin-settings/src/views/Spaces.vue
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ import {
useSpaceActionsDisable,
useSpaceActionsRestore,
useSpaceActionsEditQuota,
useStore,
useConfigStore
} from '@ownclouders/web-pkg'
import { buildSpace, SpaceResource } from '@ownclouders/web-client/src/helpers'
Expand All @@ -97,7 +96,6 @@ export default defineComponent({
}
},
setup() {
const store = useStore()
const spaces = ref([])
const clientService = useClientService()
const { $gettext } = useGettext()
Expand Down Expand Up @@ -161,7 +159,7 @@ export default defineComponent({
selectedSpaces.value.splice(0, selectedSpaces.value.length)
}

const { actions: deleteActions } = useSpaceActionsDelete({ store })
const { actions: deleteActions } = useSpaceActionsDelete()
const { actions: disableActions } = useSpaceActionsDisable()
const { actions: editQuotaActions } = useSpaceActionsEditQuota()
const { actions: restoreActions } = useSpaceActionsRestore()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { ref } from 'vue'
import AppTemplate from '../../../src/components/AppTemplate.vue'
import {
createStore,
defaultComponentMocks,
defaultPlugins,
defaultStoreMockOptions,
RouteLocation,
shallowMount
} from 'web-test-helpers'
Expand All @@ -25,8 +23,6 @@ const elSelectors = {

jest.mock('@ownclouders/web-pkg')

afterEach(() => jest.clearAllMocks())

describe('AppTemplate', () => {
describe('loading is true', () => {
it('should show app loading spinner component', () => {
Expand Down Expand Up @@ -114,9 +110,6 @@ describe('AppTemplate', () => {
})
})

const storeOptions = { ...defaultStoreMockOptions }
const store = createStore(storeOptions)

function getWrapper({ props = {}, isMobileWidth = false } = {}) {
return {
wrapper: shallowMount(AppTemplate, {
Expand All @@ -129,7 +122,7 @@ function getWrapper({ props = {}, isMobileWidth = false } = {}) {
...props
},
global: {
plugins: [...defaultPlugins(), store],
plugins: [...defaultPlugins()],
provide: { isMobileWidth: ref(isMobileWidth) },
stubs: {
OcButton: false
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { defaultPlugins, defaultStoreMockOptions, mount } from 'web-test-helpers'
import { defaultPlugins, mount } from 'web-test-helpers'
import { mock } from 'jest-mock-extended'
import { Resource } from '@ownclouders/web-client/src/helpers'
import ContextActions from '../../../../src/components/Groups/ContextActions.vue'
Expand Down Expand Up @@ -63,9 +63,7 @@ describe.skip('ContextActions', () => {
})

function getWrapper() {
const storeOptions = { ...defaultStoreMockOptions }
return {
storeOptions,
wrapper: mount(ContextActions, {
props: {
items: [mock<Resource>()]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import CreateGroupModal from '../../../../src/components/Groups/CreateGroupModal.vue'
import {
createStore,
defaultComponentMocks,
defaultPlugins,
defaultStoreMockOptions,
mockAxiosReject,
mockAxiosResolve,
shallowMount
Expand Down Expand Up @@ -114,20 +112,17 @@ describe('CreateGroupModal', () => {

function getWrapper() {
const mocks = defaultComponentMocks()
const storeOptions = defaultStoreMockOptions
const store = createStore(storeOptions)

return {
mocks,
storeOptions,
wrapper: shallowMount(CreateGroupModal, {
props: {
modal: mock<Modal>()
},
global: {
mocks,
provide: mocks,
plugins: [...defaultPlugins(), store]
plugins: [...defaultPlugins()]
}
})
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
import EditPanel from '../../../../../src/components/Groups/SideBar/EditPanel.vue'
import {
createStore,
defaultComponentMocks,
defaultPlugins,
defaultStoreMockOptions,
mockAxiosReject,
mount
} from 'web-test-helpers'
import { defaultComponentMocks, defaultPlugins, mockAxiosReject, mount } from 'web-test-helpers'
import { mock } from 'jest-mock-extended'
import { AxiosResponse } from 'axios'

Expand Down Expand Up @@ -79,8 +72,6 @@ describe('EditPanel', () => {

function getWrapper() {
const mocks = defaultComponentMocks()
const storeOptions = defaultStoreMockOptions
const store = createStore(storeOptions)

return {
mocks,
Expand All @@ -91,7 +82,7 @@ function getWrapper() {
global: {
mocks,
provide: mocks,
plugins: [...defaultPlugins(), store],
plugins: [...defaultPlugins()],
stubs: {
'oc-text-input': true,
'avatar-image': true,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
import {
createStore,
defaultComponentMocks,
defaultPlugins,
defaultStoreMockOptions,
defaultStubs,
mount
} from 'web-test-helpers'
import { defaultComponentMocks, defaultPlugins, defaultStubs, mount } from 'web-test-helpers'
import { mock } from 'jest-mock-extended'
import { Resource } from '@ownclouders/web-client/src/helpers'
import ContextActions from '../../../../src/components/Spaces/ContextActions.vue'
Expand Down Expand Up @@ -55,13 +48,10 @@ describe.skip('ContextActions', () => {
})

function getWrapper() {
const storeOptions = { ...defaultStoreMockOptions }
const store = createStore(storeOptions)
const mocks = {
...defaultComponentMocks()
}
return {
storeOptions,
mocks,
wrapper: mount(ContextActions, {
props: {
Expand All @@ -70,7 +60,7 @@ function getWrapper() {
global: {
mocks,
stubs: { ...defaultStubs, 'action-menu-item': true },
plugins: [...defaultPlugins(), store]
plugins: [...defaultPlugins()]
}
})
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
import {
createStore,
defaultComponentMocks,
defaultPlugins,
defaultStoreMockOptions,
defaultStubs,
mount
} from 'web-test-helpers'
import { defaultComponentMocks, defaultPlugins, defaultStubs, mount } from 'web-test-helpers'
import { mock } from 'jest-mock-extended'
import { Resource } from '@ownclouders/web-client/src/helpers'
import ActionsPanel from '../../../../../src/components/Spaces/SideBar/ActionsPanel.vue'
Expand Down Expand Up @@ -66,13 +59,10 @@ describe('ActionsPanel', () => {
})

function getWrapper() {
const storeOptions = { ...defaultStoreMockOptions }
const store = createStore(storeOptions)
const mocks = {
...defaultComponentMocks()
}
return {
storeOptions,
mocks,
wrapper: mount(ActionsPanel, {
props: {
Expand All @@ -81,7 +71,7 @@ function getWrapper() {
global: {
mocks,
stubs: { ...defaultStubs, 'action-menu-item': true },
plugins: [...defaultPlugins(), store]
plugins: [...defaultPlugins()]
}
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,7 @@ import { mock } from 'jest-mock-extended'
import { unref } from 'vue'
import { Group } from '@ownclouders/web-client/src/generated'
import { eventBus } from '@ownclouders/web-pkg'
import {
createStore,
defaultComponentMocks,
defaultStoreMockOptions,
getComposableWrapper
} from 'web-test-helpers'
import { defaultComponentMocks, getComposableWrapper } from 'web-test-helpers'

describe('useGroupActionsDelete', () => {
describe('method "isEnabled"', () => {
Expand Down Expand Up @@ -69,24 +64,20 @@ function getWrapper({
setup: (
instance: ReturnType<typeof useGroupActionsDelete>,
{
storeOptions,
clientService
}: {
storeOptions: typeof defaultStoreMockOptions
clientService: ReturnType<typeof defaultComponentMocks>['$clientService']
}
) => void
}) {
const storeOptions = defaultStoreMockOptions
const store = createStore(storeOptions)
const mocks = defaultComponentMocks()
return {
wrapper: getComposableWrapper(
() => {
const instance = useGroupActionsDelete()
setup(instance, { storeOptions, clientService: mocks.$clientService })
setup(instance, { clientService: mocks.$clientService })
},
{ store, mocks, provide: mocks }
{ mocks, provide: mocks }
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,7 @@ import { mock } from 'jest-mock-extended'
import { unref } from 'vue'
import { User } from '@ownclouders/web-client/src/generated'
import { eventBus, useCapabilityStore } from '@ownclouders/web-pkg'
import {
createStore,
defaultComponentMocks,
defaultStoreMockOptions,
getComposableWrapper,
writable
} from 'web-test-helpers'
import { defaultComponentMocks, getComposableWrapper, writable } from 'web-test-helpers'

describe('useUserActionsDelete', () => {
describe('method "isEnabled"', () => {
Expand Down Expand Up @@ -65,24 +59,20 @@ function getWrapper({
setup: (
instance: ReturnType<typeof useUserActionsDelete>,
{
storeOptions,
clientService
}: {
storeOptions: typeof defaultStoreMockOptions
clientService: ReturnType<typeof defaultComponentMocks>['$clientService']
}
) => void
}) {
const storeOptions = defaultStoreMockOptions
const store = createStore(storeOptions)
const mocks = defaultComponentMocks()
return {
wrapper: getComposableWrapper(
() => {
const instance = useUserActionsDelete()
setup(instance, { storeOptions, clientService: mocks.$clientService })
setup(instance, { clientService: mocks.$clientService })
},
{ store, mocks, provide: mocks }
{ mocks, provide: mocks }
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,7 @@ import { useUserActionsEditLogin } from '../../../../../src/composables/actions/
import { mock } from 'jest-mock-extended'
import { unref } from 'vue'
import { User } from '@ownclouders/web-client/src/generated'
import {
createStore,
defaultStoreMockOptions,
getComposableWrapper,
writable
} from 'web-test-helpers'
import { getComposableWrapper, writable } from 'web-test-helpers'
import { useCapabilityStore, useModals } from '@ownclouders/web-pkg'

describe('useUserActionsEditLogin', () => {
Expand Down Expand Up @@ -50,25 +45,12 @@ describe('useUserActionsEditLogin', () => {
function getWrapper({
setup
}: {
setup: (
instance: ReturnType<typeof useUserActionsEditLogin>,
{
storeOptions
}: {
storeOptions: typeof defaultStoreMockOptions
}
) => void
setup: (instance: ReturnType<typeof useUserActionsEditLogin>) => void
}) {
const storeOptions = defaultStoreMockOptions
const store = createStore(storeOptions)

return {
wrapper: getComposableWrapper(
() => {
const instance = useUserActionsEditLogin()
setup(instance, { storeOptions })
},
{ store }
)
wrapper: getComposableWrapper(() => {
const instance = useUserActionsEditLogin()
setup(instance)
})
}
}
Loading