diff --git a/src/renderer/components/TimelineSpace/Contents/Cards/User.vue b/src/renderer/components/TimelineSpace/Contents/Cards/User.vue
index 4420bbd5..51a5112e 100644
--- a/src/renderer/components/TimelineSpace/Contents/Cards/User.vue
+++ b/src/renderer/components/TimelineSpace/Contents/Cards/User.vue
@@ -11,13 +11,28 @@
@{{ user.acct }}
+
+
+
+
+
+
+
+
diff --git a/src/renderer/components/TimelineSpace/Contents/Lists/Index.vue b/src/renderer/components/TimelineSpace/Contents/Lists/Index.vue
index 73c9ac5e..2ab2f69f 100644
--- a/src/renderer/components/TimelineSpace/Contents/Lists/Index.vue
+++ b/src/renderer/components/TimelineSpace/Contents/Lists/Index.vue
@@ -9,9 +9,14 @@
-
+
{{ list.title }}
+
+
+ Edit
+
+
@@ -71,6 +76,9 @@ export default {
} finally {
this.creating = false
}
+ },
+ edit (list) {
+ return this.$router.push(`/${this.id()}/lists/${list.id}/edit`)
}
}
}
@@ -105,7 +113,11 @@ export default {
}
.list {
- padding: 12px 24px;
+ padding: 4px 24px;
+ display: flex;
+ flex-dirrection: row;
+ align-items: baseline;
+ justify-content: space-between;
border-bottom: 1px solid var(--theme-border-color);
.title {
diff --git a/src/renderer/components/TimelineSpace/HeaderMenu.vue b/src/renderer/components/TimelineSpace/HeaderMenu.vue
index ecc5dc46..bee0498a 100644
--- a/src/renderer/components/TimelineSpace/HeaderMenu.vue
+++ b/src/renderer/components/TimelineSpace/HeaderMenu.vue
@@ -57,6 +57,9 @@ export default {
case 'lists':
this.$store.commit('TimelineSpace/HeaderMenu/updateTitle', 'Lists')
break
+ case 'edit-list':
+ this.$store.commit('TimelineSpace/HeaderMenu/updateTitle', 'Members')
+ break
case 'list':
this.$store.dispatch('TimelineSpace/HeaderMenu/fetchList', this.$route.params.list_id)
break
diff --git a/src/renderer/components/TimelineSpace/Modals.vue b/src/renderer/components/TimelineSpace/Modals.vue
index b8910fa5..718b92a7 100644
--- a/src/renderer/components/TimelineSpace/Modals.vue
+++ b/src/renderer/components/TimelineSpace/Modals.vue
@@ -4,6 +4,7 @@
+
@@ -12,6 +13,7 @@ import NewToot from './Modals/NewToot'
import Jump from './Modals/Jump'
import ImageViewer from './Modals/ImageViewer'
import ListMembership from './Modals/ListMembership'
+import AddListMember from './Modals/AddListMember'
export default {
name: 'modals',
@@ -19,7 +21,8 @@ export default {
NewToot,
Jump,
ImageViewer,
- ListMembership
+ ListMembership,
+ AddListMember
}
}
diff --git a/src/renderer/components/TimelineSpace/Modals/AddListMember.vue b/src/renderer/components/TimelineSpace/Modals/AddListMember.vue
new file mode 100644
index 00000000..76296d13
--- /dev/null
+++ b/src/renderer/components/TimelineSpace/Modals/AddListMember.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+ {{ username(user) }}
+
+
+ @{{ user.acct }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/renderer/router/index.js b/src/renderer/router/index.js
index c7e6f89b..670b42d0 100644
--- a/src/renderer/router/index.js
+++ b/src/renderer/router/index.js
@@ -94,6 +94,12 @@ export default new Router({
name: 'lists',
component: require('@/components/TimelineSpace/Contents/Lists/Index').default
},
+ {
+ path: 'lists/:list_id/edit',
+ name: 'edit-list',
+ component: require('@/components/TimelineSpace/Contents/Lists/Edit').default,
+ props: true
+ },
{
path: 'lists/:list_id',
name: 'list',
diff --git a/src/renderer/store/TimelineSpace/Contents/Lists.js b/src/renderer/store/TimelineSpace/Contents/Lists.js
index 81ff87b1..7e049ac6 100644
--- a/src/renderer/store/TimelineSpace/Contents/Lists.js
+++ b/src/renderer/store/TimelineSpace/Contents/Lists.js
@@ -1,10 +1,12 @@
import Index from './Lists/Index'
import Show from './Lists/Show'
+import Edit from './Lists/Edit'
export default {
namespaced: true,
modules: {
Index,
- Show
+ Show,
+ Edit
}
}
diff --git a/src/renderer/store/TimelineSpace/Contents/Lists/Edit.js b/src/renderer/store/TimelineSpace/Contents/Lists/Edit.js
new file mode 100644
index 00000000..e29b6ef7
--- /dev/null
+++ b/src/renderer/store/TimelineSpace/Contents/Lists/Edit.js
@@ -0,0 +1,36 @@
+import Mastodon from 'megalodon'
+
+export default {
+ namespaced: true,
+ state: {
+ members: []
+ },
+ mutations: {
+ changeMembers (state, members) {
+ state.members = members
+ }
+ },
+ actions: {
+ fetchMembers ({ commit, rootState }, listId) {
+ const client = new Mastodon(
+ rootState.TimelineSpace.account.accessToken,
+ rootState.TimelineSpace.account.baseURL + '/api/v1'
+ )
+ return client.get(`/lists/${listId}/accounts`, {
+ limit: 0
+ })
+ .then((data) => {
+ commit('changeMembers', data)
+ })
+ },
+ removeAccount ({ rootState }, obj) {
+ const client = new Mastodon(
+ rootState.TimelineSpace.account.accessToken,
+ rootState.TimelineSpace.account.baseURL + '/api/v1'
+ )
+ return client.del(`/lists/${obj.listId}/accounts`, {
+ account_ids: [obj.account.id]
+ })
+ }
+ }
+}
diff --git a/src/renderer/store/TimelineSpace/Modals.js b/src/renderer/store/TimelineSpace/Modals.js
index dcc03b34..a18c98bc 100644
--- a/src/renderer/store/TimelineSpace/Modals.js
+++ b/src/renderer/store/TimelineSpace/Modals.js
@@ -2,6 +2,7 @@ import NewToot from './Modals/NewToot'
import ImageViewer from './Modals/ImageViewer'
import Jump from './Modals/Jump'
import ListMembership from './Modals/ListMembership'
+import AddListMember from './Modals/AddListMember'
const Modals = {
namespaced: true,
@@ -9,7 +10,8 @@ const Modals = {
ImageViewer,
NewToot,
Jump,
- ListMembership
+ ListMembership,
+ AddListMember
}
}
diff --git a/src/renderer/store/TimelineSpace/Modals/AddListMember.js b/src/renderer/store/TimelineSpace/Modals/AddListMember.js
new file mode 100644
index 00000000..e27eb81a
--- /dev/null
+++ b/src/renderer/store/TimelineSpace/Modals/AddListMember.js
@@ -0,0 +1,49 @@
+import Mastodon from 'megalodon'
+
+export default {
+ namespaced: true,
+ state: {
+ modalOpen: false,
+ accounts: [],
+ targetListId: null
+ },
+ mutations: {
+ changeModal (state, value) {
+ state.modalOpen = value
+ },
+ updateAccounts (state, accounts) {
+ state.accounts = accounts
+ },
+ setListId (state, id) {
+ state.targetListId = id
+ }
+ },
+ actions: {
+ changeModal ({ commit }, value) {
+ commit('changeModal', value)
+ },
+ search ({ commit, rootState }, name) {
+ const client = new Mastodon(
+ rootState.TimelineSpace.account.accessToken,
+ rootState.TimelineSpace.account.baseURL + '/api/v1'
+ )
+ return client.get('/accounts/search', {
+ q: name,
+ following: true
+ })
+ .then(data => {
+ commit('updateAccounts', data)
+ return data
+ })
+ },
+ add ({ state, rootState }, account) {
+ const client = new Mastodon(
+ rootState.TimelineSpace.account.accessToken,
+ rootState.TimelineSpace.account.baseURL + '/api/v1'
+ )
+ return client.post(`/lists/${state.targetListId}/accounts`, {
+ account_ids: [account.id]
+ })
+ }
+ }
+}