From c714eb26002b1343a64d664ad7c1282f838f39aa Mon Sep 17 00:00:00 2001 From: eugenijm Date: Mon, 4 Feb 2019 05:23:10 +0300 Subject: Add admin and moderator indicators to the user card --- src/services/entity_normalizer/entity_normalizer.service.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/services') diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index bba6b363..bbf20b64 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -90,6 +90,8 @@ export const parseUser = (data) => { output.statusnet_blocking = data.statusnet_blocking output.is_local = data.is_local + output.is_admin = data.is_admin + output.is_moderator = data.is_moderator output.follows_you = data.follows_you -- cgit v1.2.3-70-g09d2 From 648f635429da929e7090b103b9c8d354a1d3860a Mon Sep 17 00:00:00 2001 From: eugenijm Date: Mon, 4 Feb 2019 17:03:35 +0300 Subject: Allow to configure visibility for admin and moderator badges --- src/components/user_card_content/user_card_content.js | 15 +++++++++++++++ src/components/user_card_content/user_card_content.vue | 4 ++-- src/components/user_settings/user_settings.js | 7 ++++++- src/components/user_settings/user_settings.vue | 5 +++++ src/i18n/en.json | 2 ++ src/i18n/ru.json | 2 ++ src/services/api/api.service.js | 2 +- .../entity_normalizer/entity_normalizer.service.js | 4 ++-- 8 files changed, 35 insertions(+), 6 deletions(-) (limited to 'src/services') diff --git a/src/components/user_card_content/user_card_content.js b/src/components/user_card_content/user_card_content.js index 6f6d04a7..427cb32d 100644 --- a/src/components/user_card_content/user_card_content.js +++ b/src/components/user_card_content/user_card_content.js @@ -79,6 +79,21 @@ export default { set (color) { this.$store.dispatch('setHighlight', { user: this.user.screen_name, color }) } + }, + visibleRole () { + const user = this.user + + if (!(user.role === 'admin' || user.role === 'moderator')) { + return undefined + } + + if (this.isOtherUser) { + return user.role + } + + if (user.show_role) { + return user.role + } } }, components: { diff --git a/src/components/user_card_content/user_card_content.vue b/src/components/user_card_content/user_card_content.vue index 3c0e160c..0b4d0d21 100644 --- a/src/components/user_card_content/user_card_content.vue +++ b/src/components/user_card_content/user_card_content.vue @@ -20,8 +20,7 @@ @{{user.screen_name}} - Admin - Moderator + {{visibleRole}} {{dailyAvg}} {{ $t('user_card.per_day') }} @@ -254,6 +253,7 @@ .staff { border: 1px solid $admin-border-color; color: $admin-color; + text-transform: capitalize; background-color: $admin-background-color; line-height: 12px; border-radius: 3px; diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js index ef9398f6..4f991370 100644 --- a/src/components/user_settings/user_settings.js +++ b/src/components/user_settings/user_settings.js @@ -14,6 +14,8 @@ const UserSettings = { newDefaultScope: this.$store.state.users.currentUser.default_scope, hideFollows: this.$store.state.users.currentUser.hide_follows, hideFollowers: this.$store.state.users.currentUser.hide_followers, + showRole: this.$store.state.users.currentUser.show_role, + role: this.$store.state.users.currentUser.role, followList: null, followImportError: false, followsImported: false, @@ -71,6 +73,8 @@ const UserSettings = { const no_rich_text = this.newNoRichText const hide_follows = this.hideFollows const hide_followers = this.hideFollowers + const show_role = this.showRole + /* eslint-enable camelcase */ this.$store.state.api.backendInteractor .updateProfile({ @@ -83,7 +87,8 @@ const UserSettings = { default_scope, no_rich_text, hide_follows, - hide_followers + hide_followers, + show_role /* eslint-enable camelcase */ }}).then((user) => { if (!user.error) { diff --git a/src/components/user_settings/user_settings.vue b/src/components/user_settings/user_settings.vue index 19b7bdbd..ea5b3de5 100644 --- a/src/components/user_settings/user_settings.vue +++ b/src/components/user_settings/user_settings.vue @@ -37,6 +37,11 @@

+

+ + + +

diff --git a/src/i18n/en.json b/src/i18n/en.json index ac7cc2a7..30bbe214 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -166,6 +166,8 @@ "no_rich_text_description": "Strip rich text formatting from all posts", "hide_follows_description": "Don't show who I'm following", "hide_followers_description": "Don't show who's following me", + "show_admin_badge": "Show Admin badge on my user card", + "show_moderator_badge": "Show Moderator badge on my user card", "nsfw_clickthrough": "Enable clickthrough NSFW attachment hiding", "panelRadius": "Panels", "pause_on_unfocused": "Pause streaming when tab is not focused", diff --git a/src/i18n/ru.json b/src/i18n/ru.json index e86eaff9..b5686a5c 100644 --- a/src/i18n/ru.json +++ b/src/i18n/ru.json @@ -129,6 +129,8 @@ "no_rich_text_description": "Убрать форматирование из всех постов", "hide_follows_description": "Не показывать кого я читаю", "hide_followers_description": "Не показывать кто читает меня", + "show_admin_badge": "Показывать значок администратора на моей карточке пользователя", + "show_moderator_badge": "Показывать значок модератора на моей карточке пользователя", "nsfw_clickthrough": "Включить скрытие NSFW вложений", "panelRadius": "Панели", "pause_on_unfocused": "Приостановить загрузку когда вкладка не в фокусе", diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index d4d52ab1..f2365b7e 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -130,7 +130,7 @@ const updateBanner = ({credentials, params}) => { // description const updateProfile = ({credentials, params}) => { // Always include these fields, because they might be empty or false - const fields = ['description', 'locked', 'no_rich_text', 'hide_follows', 'hide_followers'] + const fields = ['description', 'locked', 'no_rich_text', 'hide_follows', 'hide_followers', 'show_role'] let url = PROFILE_UPDATE_URL const form = new FormData() diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index bbf20b64..828c48f9 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -90,8 +90,8 @@ export const parseUser = (data) => { output.statusnet_blocking = data.statusnet_blocking output.is_local = data.is_local - output.is_admin = data.is_admin - output.is_moderator = data.is_moderator + output.role = data.role + output.show_role = data.show_role output.follows_you = data.follows_you -- cgit v1.2.3-70-g09d2 From 2f12ac7ea4ab96ba3af8a9d1d0941e13f5fb16b8 Mon Sep 17 00:00:00 2001 From: dave Date: Wed, 6 Feb 2019 11:17:23 -0500 Subject: #315 - export all follows as CSV --- src/components/user_settings/user_settings.js | 5 ++++- src/services/api/api.service.js | 5 ++++- .../backend_interactor_service/backend_interactor_service.js | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src/services') diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js index ef9398f6..cb0ad9f3 100644 --- a/src/components/user_settings/user_settings.js +++ b/src/components/user_settings/user_settings.js @@ -238,7 +238,10 @@ const UserSettings = { exportFollows () { this.enableFollowsExport = false this.$store.state.api.backendInteractor - .fetchFriends({id: this.$store.state.users.currentUser.id}) + .fetchFriends({ + id: this.$store.state.users.currentUser.id, + isExport: true + }) .then((friendList) => { this.exportPeople(friendList, 'friends.csv') setTimeout(() => { this.enableFollowsExport = true }, 2000) diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index d4d52ab1..cf0c2eb2 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -247,11 +247,14 @@ const fetchUser = ({id, credentials}) => { .then((data) => parseUser(data)) } -const fetchFriends = ({id, page, credentials}) => { +const fetchFriends = ({id, page, isExport, credentials}) => { let url = `${FRIENDS_URL}?user_id=${id}` if (page) { url = url + `&page=${page}` } + if (isExport !== undefined) { + url = url + `&export=${isExport}` + } return fetch(url, { headers: authHeaders(credentials) }) .then((data) => data.json()) .then((data) => data.map(parseUser)) diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js index ed7d4b49..423aeba5 100644 --- a/src/services/backend_interactor_service/backend_interactor_service.js +++ b/src/services/backend_interactor_service/backend_interactor_service.js @@ -10,8 +10,8 @@ const backendInteractorService = (credentials) => { return apiService.fetchConversation({id, credentials}) } - const fetchFriends = ({id, page}) => { - return apiService.fetchFriends({id, page, credentials}) + const fetchFriends = ({id, page, isExport = false}) => { + return apiService.fetchFriends({id, page, isExport, credentials}) } const fetchFollowers = ({id, page}) => { -- cgit v1.2.3-70-g09d2 From a3a9949a21f69a21c4bd27cccfa2bc0ed1b0d323 Mon Sep 17 00:00:00 2001 From: dave Date: Wed, 6 Feb 2019 13:18:54 -0500 Subject: #315 - clean up the request --- src/services/api/api.service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/services') diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index cf0c2eb2..df920573 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -252,7 +252,7 @@ const fetchFriends = ({id, page, isExport, credentials}) => { if (page) { url = url + `&page=${page}` } - if (isExport !== undefined) { + if (isExport) { url = url + `&export=${isExport}` } return fetch(url, { headers: authHeaders(credentials) }) -- cgit v1.2.3-70-g09d2 From 312841717619e397c7cb3255c1cc3e66c0a1044e Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 7 Feb 2019 09:57:16 -0500 Subject: #315 - separate export and fetch follows logic --- src/components/user_settings/user_settings.js | 5 ++--- src/services/api/api.service.js | 13 +++++++++---- .../backend_interactor_service.js | 5 +++++ 3 files changed, 16 insertions(+), 7 deletions(-) (limited to 'src/services') diff --git a/src/components/user_settings/user_settings.js b/src/components/user_settings/user_settings.js index cb0ad9f3..a2a23c6f 100644 --- a/src/components/user_settings/user_settings.js +++ b/src/components/user_settings/user_settings.js @@ -238,9 +238,8 @@ const UserSettings = { exportFollows () { this.enableFollowsExport = false this.$store.state.api.backendInteractor - .fetchFriends({ - id: this.$store.state.users.currentUser.id, - isExport: true + .exportFriends({ + id: this.$store.state.users.currentUser.id }) .then((friendList) => { this.exportPeople(friendList, 'friends.csv') diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index df920573..24ff0f74 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -247,14 +247,18 @@ const fetchUser = ({id, credentials}) => { .then((data) => parseUser(data)) } -const fetchFriends = ({id, page, isExport, credentials}) => { +const fetchFriends = ({id, page, credentials}) => { let url = `${FRIENDS_URL}?user_id=${id}` if (page) { url = url + `&page=${page}` } - if (isExport) { - url = url + `&export=${isExport}` - } + return fetch(url, { headers: authHeaders(credentials) }) + .then((data) => data.json()) + .then((data) => data.map(parseUser)) +} + +const exportFriends = ({id, credentials}) => { + let url = `${FRIENDS_URL}?user_id=${id}&export=true` return fetch(url, { headers: authHeaders(credentials) }) .then((data) => data.json()) .then((data) => data.map(parseUser)) @@ -539,6 +543,7 @@ const apiService = { fetchConversation, fetchStatus, fetchFriends, + exportFriends, fetchFollowers, followUser, unfollowUser, diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js index 423aeba5..c2d1617e 100644 --- a/src/services/backend_interactor_service/backend_interactor_service.js +++ b/src/services/backend_interactor_service/backend_interactor_service.js @@ -14,6 +14,10 @@ const backendInteractorService = (credentials) => { return apiService.fetchFriends({id, page, isExport, credentials}) } + const exportFriends = ({id}) => { + return apiService.exportFriends({id, credentials}) + } + const fetchFollowers = ({id, page}) => { return apiService.fetchFollowers({id, page, credentials}) } @@ -78,6 +82,7 @@ const backendInteractorService = (credentials) => { fetchStatus, fetchConversation, fetchFriends, + exportFriends, fetchFollowers, followUser, unfollowUser, -- cgit v1.2.3-70-g09d2 From bd24c615d1278ce9af459e9117eb0176db06b890 Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 7 Feb 2019 09:59:12 -0500 Subject: #315 - revert changes --- src/services/backend_interactor_service/backend_interactor_service.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/services') diff --git a/src/services/backend_interactor_service/backend_interactor_service.js b/src/services/backend_interactor_service/backend_interactor_service.js index c2d1617e..80c5cc5e 100644 --- a/src/services/backend_interactor_service/backend_interactor_service.js +++ b/src/services/backend_interactor_service/backend_interactor_service.js @@ -10,8 +10,8 @@ const backendInteractorService = (credentials) => { return apiService.fetchConversation({id, credentials}) } - const fetchFriends = ({id, page, isExport = false}) => { - return apiService.fetchFriends({id, page, isExport, credentials}) + const fetchFriends = ({id, page}) => { + return apiService.fetchFriends({id, page, credentials}) } const exportFriends = ({id}) => { -- cgit v1.2.3-70-g09d2