Skip to content

Commit 9df6c84

Browse files
authored
fix view mode mobile
fix view mode mobile
2 parents 7952ccc + d0cdce0 commit 9df6c84

4 files changed

Lines changed: 53 additions & 78 deletions

File tree

src/components/User/UserMenu.vue

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,11 @@ import SortByDateOptionIcon from 'vue-material-design-icons/SortClockAscendingOu
3434
import { PollsAPI, ValidatorAPI } from '../../Api/index.ts'
3535
import { useOptionsStore } from '../../stores/options.ts'
3636
import { usePollStore } from '../../stores/poll.ts'
37-
import { usePreferencesStore } from '../../stores/preferences.ts'
3837
import { useSessionStore } from '../../stores/session.ts'
3938
import { useSubscriptionStore } from '../../stores/subscription.ts'
4039
import { useVotesStore } from '../../stores/votes.ts'
4140
42-
import { StatusResults, Event } from '../../Types/index.ts'
41+
import { StatusResults, Event, ViewMode } from '../../Types/index.ts'
4342
4443
import { deleteCookieByValue, findCookieByValue } from '../../helpers/index.ts'
4544
import { NcActionButtonGroup } from '@nextcloud/vue'
@@ -57,16 +56,16 @@ const optionsStore = useOptionsStore()
5756
const pollStore = usePollStore()
5857
const sessionStore = useSessionStore()
5958
const subscriptionStore = useSubscriptionStore()
60-
const preferencesStore = usePreferencesStore()
6159
const votesStore = useVotesStore()
6260
const router = useRouter()
6361
const hasCookie = !!findCookieByValue(sessionStore.publicToken)
6462
const viewMode = computed({
6563
get() {
6664
return pollStore.viewMode
6765
},
68-
set() {
69-
changeView()
66+
set(value: ViewMode) {
67+
emit(Event.TransitionsOff, 500)
68+
pollStore.setViewMode(value)
7069
},
7170
})
7271
@@ -130,22 +129,6 @@ async function resendInvitation() {
130129
}
131130
}
132131
133-
/**
134-
*
135-
*/
136-
function changeView(): void {
137-
emit(Event.TransitionsOff, 500)
138-
if (pollStore.type === 'datePoll') {
139-
preferencesStore.setViewDatePoll(
140-
pollStore.viewMode === 'table-view' ? 'list-view' : 'table-view',
141-
)
142-
} else if (pollStore.type === 'textPoll') {
143-
preferencesStore.setViewTextPoll(
144-
pollStore.viewMode === 'table-view' ? 'list-view' : 'table-view',
145-
)
146-
}
147-
}
148-
149132
/**
150133
*
151134
*/

src/stores/poll.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import {
2323
StatusResults,
2424
User,
2525
UserType,
26+
ViewMode,
2627
} from '../Types/index.ts'
2728

28-
import { usePreferencesStore, ViewMode } from './preferences.ts'
2929
import { useVotesStore, Answer } from './votes.ts'
3030
import { useOptionsStore } from './options.ts'
3131
import { usePollsStore } from './polls.ts'
@@ -244,13 +244,13 @@ export const usePollStore = defineStore('poll', {
244244

245245
getters: {
246246
viewMode(state): ViewMode {
247-
const preferencesStore = usePreferencesStore()
247+
const sessionStore = useSessionStore()
248248
if (state.type === 'textPoll') {
249-
return preferencesStore.viewTextPoll
249+
return sessionStore.viewModeTextPoll
250250
}
251251

252252
if (state.type === 'datePoll') {
253-
return preferencesStore.viewDatePoll
253+
return sessionStore.viewModeDatePoll
254254
}
255255
return 'table-view'
256256
},
@@ -356,6 +356,11 @@ export const usePollStore = defineStore('poll', {
356356
this.$reset()
357357
},
358358

359+
setViewMode(viewMode: ViewMode): void {
360+
const sessionStore = useSessionStore()
361+
sessionStore.setViewMode(this.type, viewMode)
362+
},
363+
359364
setProposalExpiration(payload: { expire: number }): void {
360365
this.configuration.proposalsExpire = moment(payload.expire).unix()
361366
this.write()

src/stores/preferences.ts

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,6 @@ export type UserPreferences = {
2626
verbosePollsList: boolean
2727
}
2828

29-
export type SessionSettings = {
30-
manualViewDatePoll: '' | ViewMode
31-
manualViewTextPoll: '' | ViewMode
32-
}
33-
3429
export type Calendar = {
3530
key: string
3631
name: string
@@ -41,7 +36,6 @@ export type Calendar = {
4136

4237
export type Preferences = {
4338
user: UserPreferences
44-
session: SessionSettings
4539
availableCalendars: Calendar[]
4640
}
4741

@@ -62,34 +56,10 @@ export const usePreferencesStore = defineStore('preferences', {
6256
useAlternativeStyling: false,
6357
verbosePollsList: false,
6458
},
65-
session: {
66-
manualViewDatePoll: '',
67-
manualViewTextPoll: '',
68-
},
6959
availableCalendars: [],
7060
}),
7161

7262
getters: {
73-
viewTextPoll(state): ViewMode {
74-
if (state.session.manualViewTextPoll) {
75-
return state.session.manualViewTextPoll
76-
}
77-
if (window.innerWidth > 480) {
78-
return state.user.defaultViewTextPoll
79-
}
80-
return 'list-view'
81-
},
82-
83-
viewDatePoll(state): ViewMode {
84-
if (state.session.manualViewDatePoll) {
85-
return state.session.manualViewDatePoll
86-
}
87-
if (window.innerWidth > 480) {
88-
return state.user.defaultViewDatePoll
89-
}
90-
return 'table-view'
91-
},
92-
9363
useNcAppNavigationNew(state): boolean {
9464
return (
9565
!state.user.useNewPollDialogInNavigation
@@ -123,14 +93,6 @@ export const usePreferencesStore = defineStore('preferences', {
12393
this.write()
12494
},
12595

126-
setViewDatePoll(viewMode: ViewMode) {
127-
this.session.manualViewDatePoll = viewMode
128-
},
129-
130-
setViewTextPoll(viewMode: ViewMode) {
131-
this.session.manualViewTextPoll = viewMode
132-
},
133-
13496
async load(): Promise<void> {
13597
try {
13698
const response = await UserSettingsAPI.getUserSettings()

src/stores/session.ts

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import { getCurrentUser } from '@nextcloud/auth'
88
import { PublicAPI, SessionAPI } from '../Api/index.ts'
99
import { createDefault, User, AppPermissions } from '../Types/index.ts'
1010
import { AppSettings, UpdateType } from './appSettings.ts'
11-
import { usePreferencesStore, ViewMode, SessionSettings } from './preferences.ts'
11+
import { usePreferencesStore, ViewMode } from './preferences.ts'
1212
import { FilterType, usePollsStore } from './polls.ts'
1313
import { Share } from './shares.ts'
1414
import { RouteLocationNormalized, RouteRecordNameGeneric } from 'vue-router'
1515
import { Logger } from '../helpers/index.ts'
16-
import { usePollStore } from './poll.ts'
16+
import { PollType, usePollStore } from './poll.ts'
1717
import { useSubscriptionStore } from './subscription.ts'
1818
import { AxiosError } from '@nextcloud/axios'
1919
import { t } from '@nextcloud/l10n'
@@ -38,6 +38,11 @@ export type UserStatus = {
3838
isAdmin: boolean
3939
}
4040

41+
export type SessionSettings = {
42+
viewModeDatePoll: '' | ViewMode
43+
viewModeTextPoll: '' | ViewMode
44+
}
45+
4146
export type Watcher = {
4247
id: string
4348
mode: UpdateType
@@ -77,8 +82,8 @@ export const useSessionStore = defineStore('session', {
7782
unrestrictedOwner: false,
7883
},
7984
sessionSettings: {
80-
manualViewDatePoll: '',
81-
manualViewTextPoll: '',
85+
viewModeDatePoll: '',
86+
viewModeTextPoll: '',
8287
},
8388
appSettings: {
8489
allAccessGroups: [],
@@ -159,23 +164,24 @@ export const useSessionStore = defineStore('session', {
159164
return 0
160165
},
161166

162-
viewTextPoll(state): ViewMode {
163-
const preferencesStore = usePreferencesStore()
164-
165-
if (state.sessionSettings.manualViewTextPoll) {
166-
return state.sessionSettings.manualViewTextPoll
167+
viewModeTextPoll(state): ViewMode {
168+
if (state.sessionSettings.viewModeTextPoll) {
169+
return state.sessionSettings.viewModeTextPoll
167170
}
171+
172+
const preferencesStore = usePreferencesStore()
168173
if (window.innerWidth > MOBILE_BREAKPOINT) {
169174
return preferencesStore.user.defaultViewTextPoll
170175
}
171176
return 'list-view'
172177
},
173178

174-
viewDatePoll(state): ViewMode {
175-
const preferencesStore = usePreferencesStore()
176-
if (state.sessionSettings.manualViewDatePoll) {
177-
return state.sessionSettings.manualViewDatePoll
179+
viewModeDatePoll(state): ViewMode {
180+
if (state.sessionSettings.viewModeDatePoll) {
181+
return state.sessionSettings.viewModeDatePoll
178182
}
183+
184+
const preferencesStore = usePreferencesStore()
179185
if (window.innerWidth > MOBILE_BREAKPOINT) {
180186
return preferencesStore.user.defaultViewDatePoll
181187
}
@@ -214,6 +220,25 @@ export const useSessionStore = defineStore('session', {
214220
},
215221

216222
actions: {
223+
getViewMode(pollType: PollType): ViewMode {
224+
if (pollType === 'datePoll') {
225+
return this.viewModeDatePoll
226+
}
227+
if (pollType === 'textPoll') {
228+
return this.viewModeTextPoll
229+
}
230+
return 'list-view'
231+
},
232+
233+
setViewMode(pollType: PollType, viewMode: ViewMode): void {
234+
if (pollType === 'datePoll') {
235+
this.sessionSettings.viewModeDatePoll = viewMode
236+
}
237+
if (pollType === 'textPoll') {
238+
this.sessionSettings.viewModeTextPoll = viewMode
239+
}
240+
},
241+
217242
generateWatcherId() {
218243
this.watcher.id = Math.random().toString(36).substring(2)
219244
},
@@ -260,11 +285,11 @@ export const useSessionStore = defineStore('session', {
260285
},
261286

262287
setViewDatePoll(viewMode: ViewMode) {
263-
this.sessionSettings.manualViewDatePoll = viewMode
288+
this.sessionSettings.viewModeDatePoll = viewMode
264289
},
265290

266291
setViewTextPoll(viewMode: ViewMode) {
267-
this.sessionSettings.manualViewTextPoll = viewMode
292+
this.sessionSettings.viewModeTextPoll = viewMode
268293
},
269294

270295
async setRouter(payload: RouteLocationNormalized) {

0 commit comments

Comments
 (0)