aboutsummaryrefslogtreecommitdiff
path: root/src/components/lists_edit/lists_edit.js
diff options
context:
space:
mode:
authorSean King <seanking2919@protonmail.com>2022-08-22 19:08:58 -0600
committerSean King <seanking2919@protonmail.com>2022-08-22 19:08:58 -0600
commitee58e3868c2d58b889d8a32c1b6dfd3732df7584 (patch)
treeda8f8783734740df18cb5c1082d4756bfcf47489 /src/components/lists_edit/lists_edit.js
parent325930eecb4943bb50344159646a7c62b4bf10b3 (diff)
parentcb6b96b9ba4e71310e823aecc4bb8c22d370397a (diff)
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma-fe into add/edit-status
Diffstat (limited to 'src/components/lists_edit/lists_edit.js')
-rw-r--r--src/components/lists_edit/lists_edit.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/components/lists_edit/lists_edit.js b/src/components/lists_edit/lists_edit.js
new file mode 100644
index 00000000..a68bb589
--- /dev/null
+++ b/src/components/lists_edit/lists_edit.js
@@ -0,0 +1,91 @@
+import { mapState, mapGetters } from 'vuex'
+import BasicUserCard from '../basic_user_card/basic_user_card.vue'
+import ListsUserSearch from '../lists_user_search/lists_user_search.vue'
+import UserAvatar from '../user_avatar/user_avatar.vue'
+import { library } from '@fortawesome/fontawesome-svg-core'
+import {
+ faSearch,
+ faChevronLeft
+} from '@fortawesome/free-solid-svg-icons'
+
+library.add(
+ faSearch,
+ faChevronLeft
+)
+
+const ListsNew = {
+ components: {
+ BasicUserCard,
+ UserAvatar,
+ ListsUserSearch
+ },
+ data () {
+ return {
+ title: '',
+ userIds: [],
+ selectedUserIds: []
+ }
+ },
+ created () {
+ this.$store.dispatch('fetchList', { id: this.id })
+ .then(() => { this.title = this.findListTitle(this.id) })
+ this.$store.dispatch('fetchListAccounts', { id: this.id })
+ .then(() => {
+ this.selectedUserIds = this.findListAccounts(this.id)
+ this.selectedUserIds.forEach(userId => {
+ this.$store.dispatch('fetchUserIfMissing', userId)
+ })
+ })
+ },
+ computed: {
+ id () {
+ return this.$route.params.id
+ },
+ users () {
+ return this.userIds.map(userId => this.findUser(userId))
+ },
+ selectedUsers () {
+ return this.selectedUserIds.map(userId => this.findUser(userId)).filter(user => user)
+ },
+ ...mapState({
+ currentUser: state => state.users.currentUser
+ }),
+ ...mapGetters(['findUser', 'findListTitle', 'findListAccounts'])
+ },
+ methods: {
+ onInput () {
+ this.search(this.query)
+ },
+ selectUser (user) {
+ if (this.selectedUserIds.includes(user.id)) {
+ this.removeUser(user.id)
+ } else {
+ this.addUser(user)
+ }
+ },
+ isSelected (user) {
+ return this.selectedUserIds.includes(user.id)
+ },
+ addUser (user) {
+ this.selectedUserIds.push(user.id)
+ },
+ removeUser (userId) {
+ this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)
+ },
+ onResults (results) {
+ this.userIds = results
+ },
+ updateList () {
+ this.$store.dispatch('setList', { id: this.id, title: this.title })
+ this.$store.dispatch('setListAccounts', { id: this.id, accountIds: this.selectedUserIds })
+
+ this.$router.push({ name: 'lists-timeline', params: { id: this.id } })
+ },
+ deleteList () {
+ this.$store.dispatch('deleteList', { id: this.id })
+ this.$router.push({ name: 'lists' })
+ }
+ }
+}
+
+export default ListsNew