From 6fc143e6e590719744a29e8939ad94709465cf70 Mon Sep 17 00:00:00 2001 From: Devlin Junker Date: Sun, 6 Aug 2023 12:37:39 -0700 Subject: [PATCH 01/13] add feed pretty much works Signed-off-by: Devlin Junker --- src/components/AddFeed.vue | 214 +++++++++++++++++++++---------------- src/components/Sidebar.vue | 7 +- src/store/feed.ts | 34 +++--- src/store/folder.ts | 18 ++++ 4 files changed, 162 insertions(+), 111 deletions(-) diff --git a/src/components/AddFeed.vue b/src/components/AddFeed.vue index af5d75937..5bf0c7389 100644 --- a/src/components/AddFeed.vue +++ b/src/components/AddFeed.vue @@ -6,83 +6,85 @@ name="feedform">
+ autofocus + style="width: 90%;"> -

+

{{ t("news", "Feed exists already!") }}

+ - - {{ t("news", "New folder") }}? - - - - - - - -

- {{ t("news", "Folder exists already!") }} -

+
+ + + + + + + {{ t("news", "New folder") }}? + +
+ +

+ {{ t("news", "Folder exists already!") }} +

- - - {{ t("news", "Credentials") }}? - - -
-

- {{ - t( - "news", - "HTTP Basic Auth credentials must be stored unencrypted! Everyone with access to the server or database will be able to access them!" - ) - }} -

- - - -
+

+ {{ + t( + "news", + "HTTP Basic Auth credentials must be stored unencrypted! Everyone with access to the server or database will be able to access them!" + ) + }} +

+ +
+ + {{ t("news", "Credentials") }}? + + +
+ + + +
+
{{ t("news", "Auto discover Feed") }}? @@ -90,11 +92,7 @@ {{ t("news", "Subscribe") }} @@ -112,19 +110,25 @@ import NcModal from '@nextcloud/vue/dist/Components/NcModal.js' import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js' import NcButton from '@nextcloud/vue/dist/Components/NcButton.js' import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js' +import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js' import { Folder } from '../types/Folder' import { Feed } from '../types/Feed' import { ACTIONS } from '../store' +import { mapState } from 'vuex' +import axios from 'axios' type AddFeedState = { - folder: Folder; + folder?: Folder; + newFolderName: String; + autoDiscover: boolean; createNewFolder: boolean; withBasicAuth: boolean; + // feedUrlExists: boolean; // from props - feed?: Feed; + feedUrl?: String; }; export default Vue.extend({ @@ -133,53 +137,75 @@ export default Vue.extend({ NcCheckboxRadioSwitch, NcButton, NcMultiselect, + NcSelect }, - props: { - feed: { - type: String, - default: '', - }, - }, + // props: { + // feed: { + // type: String, + // default: '', + // }, + // }, data: (): AddFeedState => { return { - folder: { name: '' } as Folder, + folder: undefined, + newFolderName: '', + autoDiscover: true, createNewFolder: false, withBasicAuth: false, + + feedUrl: '' } }, computed: { + // ...mapState(['folders']), folders(): Folder[] { return this.$store.state.folders }, + disableAddFeed(): boolean { + return this.feed === "" || this.feedUrlExists() || (this.createNewFolder && this.newFolderName === "" || this.folderNameExists()) + } }, methods: { - newFolder() { - this.createNewFolder = true - }, - abortNewFolder() { - this.createNewFolder = false - }, - addFeed() { + created() { + + }, + + async addFeed() { + let url = this.feedUrl; + this.$store.dispatch(ACTIONS.ADD_FEED, { feedReq: { - url: this.feed, - folder: this.folder, - autoDiscover: true, + url: this.feedUrl, + folder: this.createNewFolder ? { name: this.newFolderName } : this.folder, + autoDiscover: this.autoDiscover, }, - }) + }); + this.$emit('close'); }, + + feedUrlExists(): boolean { + // TODO: check feed url + console.log(this.feedUrl); + + return false; + }, + folderNameExists(): boolean { + // TODO: check folder name + console.log(this.newFolderName) + return false; + } }, }) diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue index 7e88d97ff..00ee93311 100644 --- a/src/components/Sidebar.vue +++ b/src/components/Sidebar.vue @@ -33,10 +33,11 @@ +