diff options
author | Devlin Junker <devlin.junker@gmail.com> | 2023-09-14 13:56:55 -0700 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2023-09-20 17:32:33 +0200 |
commit | 4b24d05ec2e58d06785650f527cf1aba74c4855c (patch) | |
tree | 19494f9ca11288caa3bea2ec6168bd7971baab2f /src | |
parent | 9d629b943a683b307c3cfe755792f9a544caca98 (diff) |
3 more feed actions
Signed-off-by: Devlin Junker <devlin.junker@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/components/SidebarFeedLinkActions.vue | 33 | ||||
-rw-r--r-- | src/dataservices/feed.service.ts | 24 | ||||
-rw-r--r-- | src/store/feed.ts | 24 | ||||
-rw-r--r-- | src/types/Feed.ts | 5 |
4 files changed, 64 insertions, 22 deletions
diff --git a/src/components/SidebarFeedLinkActions.vue b/src/components/SidebarFeedLinkActions.vue index 639bd9954..ccb18165e 100644 --- a/src/components/SidebarFeedLinkActions.vue +++ b/src/components/SidebarFeedLinkActions.vue @@ -17,37 +17,37 @@ </NcActionButton> <NcActionButton v-if="feed.ordering === FEED_ORDER.NEWEST" icon="icon-caret-dark" - @click="alert('TODO: Newest First')"> + @click="setOrdering(FEED_ORDER.OLDEST)"> {{ t("news", "Newest first") }} </NcActionButton> - <NcActionButton v-if="feed.ordering === FEED_ORDER.OLDEST" + <NcActionButton v-else-if="feed.ordering === FEED_ORDER.OLDEST" icon="icon-caret-dark" - @click="alert('TODO: Oldest first')"> + @click="setOrdering(FEED_ORDER.DEFAULT)"> {{ t("news", "Oldest first") }} </NcActionButton> - <NcActionButton v-if="feed.ordering === FEED_ORDER.DEFAULT" + <NcActionButton v-else icon="icon-caret-dark" - @click="alert('TODO: Default Order')"> + @click="setOrdering(FEED_ORDER.NEWEST)"> {{ t("news", "Default order") }} </NcActionButton> - <NcActionButton v-if="!feed.enableFullText" + <NcActionButton v-if="!feed.fullTextEnabled" icon="icon-full-text-disabled" - @click="alert('TODO: Enable Full Text')"> + @click="setFullText(true)"> {{ t("news", "Enable full text") }} </NcActionButton> - <NcActionButton v-if="feed.enableFullText" + <NcActionButton v-if="feed.fullTextEnabled" icon="icon-full-text-enabled" - @click="alert('TODO: DIsable Full Text')"> + @click="setFullText(false)"> {{ t("news", "Disable full text") }} </NcActionButton> - <NcActionButton v-if="feed.updateMode === FEED_UPDATE_MODE.UNRAD" + <NcActionButton v-if="feed.updateMode === FEED_UPDATE_MODE.UNREAD" icon="icon-updatemode-default" - @click="alert('TODO: Unread Updated')"> + @click="setUpdateMode(FEED_UPDATE_MODE.IGNORE)"> {{ t("news", "Unread updated") }} </NcActionButton> <NcActionButton v-if="feed.updateMode === FEED_UPDATE_MODE.IGNORE" icon="icon-updatemode-unread" - @click="alert('TOODO: Ignore UPdated')"> + @click="setUpdateMode(FEED_UPDATE_MODE.UNREAD)"> {{ t("news", "Ignore updated") }} </NcActionButton> <NcActionButton icon="icon-rss" @@ -120,6 +120,15 @@ export default Vue.extend({ setPinned(pinned: boolean) { this.$store.dispatch(ACTIONS.FEED_SET_PINNED, { feed: this.feed, pinned }) }, + setOrdering(ordering: FEED_ORDER) { + this.$store.dispatch(ACTIONS.FEED_SET_ORDERING, { feed: this.feed, ordering }) + }, + setFullText(fullTextEnabled: boolean) { + this.$store.dispatch(ACTIONS.FEED_SET_FULL_TEXT, { feed: this.feed, fullTextEnabled }) + }, + setUpdateMode(updateMode: FEED_UPDATE_MODE) { + this.$store.dispatch(ACTIONS.FEED_SET_UPDATE_MODE, { feed: this.feed, updateMode }) + }, }, }) diff --git a/src/dataservices/feed.service.ts b/src/dataservices/feed.service.ts index 8b2d2e7c9..f28320d55 100644 --- a/src/dataservices/feed.service.ts +++ b/src/dataservices/feed.service.ts @@ -3,15 +3,15 @@ import axios from '@nextcloud/axios' import { API_ROUTES } from '../types/ApiRoutes' -export const FEED_ORDER = { - OLDEST: 1, - NEWEST: 0, - DEFAULT: 2, +export enum FEED_ORDER { + OLDEST = 1, + NEWEST = 0, + DEFAULT = 2, } -export const FEED_UPDATE_MODE = { - IGNORE: 1, - UNREAD: 0, +export enum FEED_UPDATE_MODE { + IGNORE = 1, + UNREAD = 0, } export class FeedService { @@ -67,11 +67,17 @@ export class FeedService { * @param param0 * @param param0.feedId {Number} ID number of feed to mark items as read * @param param0.pinned {Boolean} should be pinned (true) or not pinned (flse) - * @return {AxiosResponse} Updated feed info based on parameters provided + * @param param0.ordering {FEED_ORDER} sets feed order (0 = NEWEST, 1 = OLDEST, 2 = DEFAULT) + * @param param0.fullTextEnabled {Boolean} should be full text be enabled (true) or not (flse) + * @param param0.updateMode {FEED_UPDATE_MODE} sets updateMode (0 = UNREAD, 1 = IGNORE) + * @return {AxiosResponse} Null value is returned on success */ - static updateFeed({ feedId, pinned }: { feedId: number, pinned?: boolean }): Promise<AxiosResponse> { + static updateFeed({ feedId, pinned, ordering, fullTextEnabled, updateMode }: { feedId: number, pinned?: boolean, ordering?: FEED_ORDER, fullTextEnabled?: boolean, updateMode?: FEED_UPDATE_MODE }): Promise<AxiosResponse> { return axios.patch(API_ROUTES.FEED + `/${feedId}`, { pinned, + ordering, + fullTextEnabled, + updateMode, }) } diff --git a/src/store/feed.ts b/src/store/feed.ts index adbc9eabf..b6031e4e6 100644 --- a/src/store/feed.ts +++ b/src/store/feed.ts @@ -4,7 +4,7 @@ import { ActionParams, AppState } from '../store' import { Feed } from '../types/Feed' import { FOLDER_MUTATION_TYPES, FEED_MUTATION_TYPES, FEED_ITEM_MUTATION_TYPES } from '../types/MutationTypes' import { FolderService } from '../dataservices/folder.service' -import { FeedService } from '../dataservices/feed.service' +import { FEED_ORDER, FEED_UPDATE_MODE, FeedService } from '../dataservices/feed.service' import { ItemService } from '../dataservices/item.service' export const FEED_ACTION_TYPES = { @@ -12,6 +12,9 @@ export const FEED_ACTION_TYPES = { FETCH_FEEDS: 'FETCH_FEEDS', FEED_MARK_READ: 'FEED_MARK_READ', FEED_SET_PINNED: 'FEED_SET_PINNED', + FEED_SET_ORDERING: 'FEED_SET_ORDERING', + FEED_SET_FULL_TEXT: 'FEED_SET_FULL_TEXT', + FEED_SET_UPDATE_MODE: 'FEED_SET_UPDATE_MODE', } const state = { @@ -75,6 +78,7 @@ export const actions = { } }, async [FEED_ACTION_TYPES.FEED_MARK_READ]({ commit }: ActionParams, { feed }: { feed: Feed }) { + // want to fetch feed so that we can retrieve the "highestItemId" const response = await ItemService.fetchFeedItems(feed.id as number) await FeedService.markRead({ feedId: feed.id as number, highestItemId: response.data.items[0].id }) @@ -86,6 +90,24 @@ export const actions = { commit(FEED_MUTATION_TYPES.UPDATE_FEED, { id: feed.id, pinned }) }, + + async [FEED_ACTION_TYPES.FEED_SET_ORDERING]({ commit }: ActionParams, { feed, ordering }: { feed: Feed, ordering: FEED_ORDER }) { + await FeedService.updateFeed({ feedId: feed.id as number, ordering }) + + commit(FEED_MUTATION_TYPES.UPDATE_FEED, { id: feed.id, ordering }) + }, + + async [FEED_ACTION_TYPES.FEED_SET_FULL_TEXT]({ commit }: ActionParams, { feed, fullTextEnabled }: { feed: Feed, fullTextEnabled: boolean }) { + await FeedService.updateFeed({ feedId: feed.id as number, fullTextEnabled }) + + commit(FEED_MUTATION_TYPES.UPDATE_FEED, { id: feed.id, fullTextEnabled }) + }, + + async [FEED_ACTION_TYPES.FEED_SET_UPDATE_MODE]({ commit }: ActionParams, { feed, updateMode }: { feed: Feed, updateMode: FEED_UPDATE_MODE }) { + await FeedService.updateFeed({ feedId: feed.id as number, updateMode }) + + commit(FEED_MUTATION_TYPES.UPDATE_FEED, { id: feed.id, updateMode }) + }, } export const mutations = { diff --git a/src/types/Feed.ts b/src/types/Feed.ts index d7221c452..f9544c2b0 100644 --- a/src/types/Feed.ts +++ b/src/types/Feed.ts @@ -1,3 +1,5 @@ +import { FEED_ORDER, FEED_UPDATE_MODE } from '../dataservices/feed.service' + export type Feed = { folderId?: number; unreadCount: number; @@ -7,4 +9,7 @@ export type Feed = { faviconLink?: string; id?: number; pinned: boolean; + ordering: FEED_ORDER; + fullTextEnabled: boolean; + updateMode: FEED_UPDATE_MODE } |