summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDevlin Junker <devlin.junker@gmail.com>2023-09-14 13:56:55 -0700
committerBenjamin Brahmer <info@b-brahmer.de>2023-09-20 17:32:33 +0200
commit4b24d05ec2e58d06785650f527cf1aba74c4855c (patch)
tree19494f9ca11288caa3bea2ec6168bd7971baab2f /src
parent9d629b943a683b307c3cfe755792f9a544caca98 (diff)
3 more feed actions
Signed-off-by: Devlin Junker <devlin.junker@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/components/SidebarFeedLinkActions.vue33
-rw-r--r--src/dataservices/feed.service.ts24
-rw-r--r--src/store/feed.ts24
-rw-r--r--src/types/Feed.ts5
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
}