From 3117623f3000eed03ec7828c3ed112bd67366620 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Mon, 16 Aug 2021 21:30:07 +0300 Subject: [PATCH 01/84] Implement loading more statuses when searching --- src/components/search/search.js | 20 ++++++++++++---- src/components/search/search.vue | 40 ++++++++++++++++++++++++++------ src/i18n/en.json | 3 ++- 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/components/search/search.js b/src/components/search/search.js index b62bc2c5..6347febf 100644 --- a/src/components/search/search.js +++ b/src/components/search/search.js @@ -30,7 +30,11 @@ const Search = { userIds: [], statuses: [], hashtags: [], - currenResultTab: 'statuses' + currenResultTab: 'statuses', + + statusesOffset: 0, + lastStatusFetchCount: 0, + lastQuery: '' } }, computed: { @@ -67,18 +71,26 @@ const Search = { this.loading = true this.userIds = [] - this.statuses = [] this.hashtags = [] this.$refs.searchInput.blur() + if (this.lastQuery !== query) { + this.statuses = [] + this.statusesOffset = 0 + this.lastStatusFetchCount = 0 + } - this.$store.dispatch('search', { q: query, resolve: true }) + this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset }) .then(data => { this.loading = false this.userIds = map(data.accounts, 'id') - this.statuses = data.statuses + this.statuses = this.statuses.concat(data.statuses) this.hashtags = data.hashtags this.currenResultTab = this.getActiveTab() this.loaded = true + + this.statusesOffset += data.statuses.length + this.lastStatusFetchCount = data.statuses.length + this.lastQuery = query }) }, resultCount (tabName) { diff --git a/src/components/search/search.vue b/src/components/search/search.vue index b7bfc1f3..5d8a6715 100644 --- a/src/components/search/search.vue +++ b/src/components/search/search.vue @@ -55,12 +55,6 @@
-
-

{{ $t('search.no_results') }}

-
+ +
+ +
+
+

+ {{ $t('search.no_results') }} +

+
diff --git a/src/i18n/en.json b/src/i18n/en.json index b31e4880..6026b33e 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -827,7 +827,8 @@ "hashtags": "Hashtags", "person_talking": "{count} person talking", "people_talking": "{count} people talking", - "no_results": "No results" + "no_results": "No results", + "load_more": "Load more results" }, "password_reset": { "forgot_password": "Forgot password?", From ca7fa67997de81710f96944ccdbd080dcd3b0bf9 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Sun, 22 Aug 2021 15:36:03 +0300 Subject: [PATCH 02/84] Amend status search results, and introduce searchType Use searchType to only search for statuses when searching for more results --- src/components/search/search.js | 16 ++++++++++------ src/components/search/search.vue | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/components/search/search.js b/src/components/search/search.js index 6347febf..751a9c37 100644 --- a/src/components/search/search.js +++ b/src/components/search/search.js @@ -63,28 +63,32 @@ const Search = { this.$router.push({ name: 'search', query: { query } }) this.$refs.searchInput.focus() }, - search (query) { + search (query, searchType = null) { if (!query) { this.loading = false return } this.loading = true - this.userIds = [] - this.hashtags = [] this.$refs.searchInput.blur() if (this.lastQuery !== query) { + this.userIds = [] + this.hashtags = [] this.statuses = [] + this.statusesOffset = 0 this.lastStatusFetchCount = 0 } - this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset }) + this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset, 'type': searchType }) .then(data => { this.loading = false - this.userIds = map(data.accounts, 'id') + + // Always append to old results. If new results are empty, this doesn't change anything + this.userIds = this.userIds.concat(map(data.accounts, 'id')) this.statuses = this.statuses.concat(data.statuses) - this.hashtags = data.hashtags + this.hashtags = this.hashtags.concat(data.hashtags) + this.currenResultTab = this.getActiveTab() this.loaded = true diff --git a/src/components/search/search.vue b/src/components/search/search.vue index 5d8a6715..f3076f65 100644 --- a/src/components/search/search.vue +++ b/src/components/search/search.vue @@ -68,7 +68,7 @@
Date: Tue, 28 Dec 2021 18:30:34 -0500 Subject: [PATCH 04/84] Enable anonymous users to interact with statuses remotely --- src/components/favorite_button/favorite_button.js | 5 ++++- src/components/favorite_button/favorite_button.vue | 10 ++++++++-- src/components/reply_button/reply_button.js | 3 +++ src/components/reply_button/reply_button.vue | 10 ++++++++-- src/components/retweet_button/retweet_button.js | 3 +++ src/components/retweet_button/retweet_button.vue | 10 ++++++++-- src/modules/instance.js | 14 ++++++++++++++ 7 files changed, 48 insertions(+), 7 deletions(-) diff --git a/src/components/favorite_button/favorite_button.js b/src/components/favorite_button/favorite_button.js index 5cd05f73..d15699f7 100644 --- a/src/components/favorite_button/favorite_button.js +++ b/src/components/favorite_button/favorite_button.js @@ -31,7 +31,10 @@ const FavoriteButton = { } }, computed: { - ...mapGetters(['mergedConfig']) + ...mapGetters(['mergedConfig']), + remoteInteractionLink () { + return this.$store.getters.remoteInteractionLink({ statusId: this.status.id }) + } } } diff --git a/src/components/favorite_button/favorite_button.vue b/src/components/favorite_button/favorite_button.vue index dce25e24..7d23572e 100644 --- a/src/components/favorite_button/favorite_button.vue +++ b/src/components/favorite_button/favorite_button.vue @@ -13,13 +13,19 @@ :spin="animated" /> - + - + - + - + - + - + { + if (statusId) { + return `${link}?status_id=${statusId}` + } else { + return `${link}?nickname=${nickname}` + } + } } }, actions: { From d30e39ca32caf33ccaef7ec1b1c2756456bdb0e0 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Tue, 28 Dec 2021 18:31:42 -0500 Subject: [PATCH 05/84] Add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fac68ac0..59e6789d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Ability to rearrange order of attachments when uploading - Enabled users to zoom and pan images in media viewer with mouse and touch - Added frontend ui for account migration +- Implemented remote interaction with statuses ## [2.4.2] - 2022-01-09 From b11ac221923af4df015c886850592ecf2330cc26 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Fri, 15 Jul 2022 20:22:39 -0400 Subject: [PATCH 06/84] Fix search() not honouring type param --- src/modules/statuses.js | 4 ++-- src/services/api/api.service.js | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/statuses.js b/src/modules/statuses.js index ac5d25c4..69f8af3a 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -747,8 +747,8 @@ const statuses = { rootState.api.backendInteractor.fetchRebloggedByUsers({ id }) .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })) }, - search (store, { q, resolve, limit, offset, following }) { - return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following }) + search (store, { q, resolve, limit, offset, following, type }) { + return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following, type }) .then((data) => { store.commit('addNewUsers', data.accounts) store.commit('addNewStatuses', { statuses: data.statuses }) diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index 436b8b0a..8341112b 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -1002,7 +1002,7 @@ const searchUsers = ({ credentials, query }) => { .then((data) => data.map(parseUser)) } -const search2 = ({ credentials, q, resolve, limit, offset, following }) => { +const search2 = ({ credentials, q, resolve, limit, offset, following, type }) => { let url = MASTODON_SEARCH_2 let params = [] @@ -1026,6 +1026,10 @@ const search2 = ({ credentials, q, resolve, limit, offset, following }) => { params.push(['following', true]) } + if (type) { + params.push(['following', type]) + } + params.push(['with_relationships', true]) let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&') From b09912d2f91a410a3b50ee408dd4a0621eba2ff4 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Fri, 15 Jul 2022 20:26:05 -0400 Subject: [PATCH 07/84] Make search say No more results when there are current results --- src/components/search/search.vue | 2 +- src/i18n/en.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/search/search.vue b/src/components/search/search.vue index 4373a94b..6fc6a0de 100644 --- a/src/components/search/search.vue +++ b/src/components/search/search.vue @@ -89,7 +89,7 @@ class="search-result-heading" >

- {{ $t('search.no_results') }} + {{ visibleStatuses.length === 0 ? $t('search.no_results') : $t('search.no_more_results') }}

diff --git a/src/i18n/en.json b/src/i18n/en.json index 6026b33e..167a3e0f 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -828,6 +828,7 @@ "person_talking": "{count} person talking", "people_talking": "{count} people talking", "no_results": "No results", + "no_more_results": "No more results", "load_more": "Load more results" }, "password_reset": { From dd1abc9f5d9cedf3eccb286764692e3d5a19d7a9 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 31 Jul 2022 17:04:48 +0300 Subject: [PATCH 08/84] add gitlab templates --- .gitlab/issue_templates/Bug.md | 25 ++++++++++++++++++++++ .gitlab/issue_templates/Suggestion.md | 11 ++++++++++ .gitlab/issue_templates/default.md | 7 ++++++ .gitlab/merge_request_templates/default.md | 22 +++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 .gitlab/issue_templates/Bug.md create mode 100644 .gitlab/issue_templates/Suggestion.md create mode 100644 .gitlab/issue_templates/default.md create mode 100644 .gitlab/merge_request_templates/default.md diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md new file mode 100644 index 00000000..bfd5e7b4 --- /dev/null +++ b/.gitlab/issue_templates/Bug.md @@ -0,0 +1,25 @@ +# Environment info + + +* Browser, version, OS, platform: +* Instance URL: +* Frontend version (see settings -> about): +* Backend version (see settings -> about): +* Browser extensions (ublock, rikaichamp etc): +* Known instance/user customizations (i.e. pleromafe mods/forks, instance styles etc) + +# Bug description & reproduction steps + + + + + +# Bug seriousness + + +* How annoying it is: +* How often does it happen: +* How many people does it affect: +* Is there a workaround for it: + +/label ~Bug diff --git a/.gitlab/issue_templates/Suggestion.md b/.gitlab/issue_templates/Suggestion.md new file mode 100644 index 00000000..7472981a --- /dev/null +++ b/.gitlab/issue_templates/Suggestion.md @@ -0,0 +1,11 @@ +# Behavior suggestion/Feature request + + +/label ~suggestion + diff --git a/.gitlab/issue_templates/default.md b/.gitlab/issue_templates/default.md new file mode 100644 index 00000000..4ada0702 --- /dev/null +++ b/.gitlab/issue_templates/default.md @@ -0,0 +1,7 @@ + + +/label ~needs-triage + diff --git a/.gitlab/merge_request_templates/default.md b/.gitlab/merge_request_templates/default.md new file mode 100644 index 00000000..b93d6e46 --- /dev/null +++ b/.gitlab/merge_request_templates/default.md @@ -0,0 +1,22 @@ +# Changes + +* +* +* + + + + + + From 32718016e1749ddecbaad0a04d44a0b457b67625 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 31 Jul 2022 17:07:07 +0300 Subject: [PATCH 09/84] label, info on WIPs --- .gitlab/merge_request_templates/default.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitlab/merge_request_templates/default.md b/.gitlab/merge_request_templates/default.md index b93d6e46..ed9d54cb 100644 --- a/.gitlab/merge_request_templates/default.md +++ b/.gitlab/merge_request_templates/default.md @@ -1,3 +1,9 @@ + # Changes * @@ -20,3 +26,5 @@ If merge request adds some new feature that depends on backend: 2. Link related BE merge request here --> + +/label ~needs-review From 0d714f07ecda00a54392f47fe0054e37e269a7d3 Mon Sep 17 00:00:00 2001 From: Ilja Date: Sat, 6 Aug 2022 11:43:06 +0200 Subject: [PATCH 10/84] Add priviliges We can now check what priviliges someone has besides only the role. On older back-ends, privileges aren't provided, so we have a fall-back to list the privileges corresponding to what mods/admins are allowed on older BE's. --- .../entity_normalizer.service.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js index 7f831ed9..1be19cf1 100644 --- a/src/services/entity_normalizer/entity_normalizer.service.js +++ b/src/services/entity_normalizer/entity_normalizer.service.js @@ -119,6 +119,33 @@ export const parseUser = (data) => { } else { output.role = 'member' } + + if (data.pleroma.privileges) { + output.privileges = data.pleroma.privileges + } else if (data.pleroma.is_admin) { + output.privileges = [ + 'users_read', + 'users_manage_invites', + 'users_manage_activation_state', + 'users_manage_tags', + 'users_manage_credentials', + 'users_delete', + 'messages_read', + 'messages_delete', + 'instances_delete', + 'reports_manage_reports', + 'moderation_log_read', + 'announcements_manage_announcements', + 'emoji_manage_emoji', + 'statistics_read' + ] + } else if (data.pleroma.is_moderator) { + output.privileges = [ + 'messages_delete' + ] + } else { + output.privileges = [] + } } if (data.source) { From 6c9768b8e2ffb0d1a992689f309020ff3da199d7 Mon Sep 17 00:00:00 2001 From: Ilja Date: Sat, 6 Aug 2022 14:00:29 +0200 Subject: [PATCH 11/84] Option to delete a post is shown when privileged with messages_delete --- src/components/extra_buttons/extra_buttons.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js index 22ffb65a..345402b7 100644 --- a/src/components/extra_buttons/extra_buttons.js +++ b/src/components/extra_buttons/extra_buttons.js @@ -77,8 +77,7 @@ const ExtraButtons = { currentUser () { return this.$store.state.users.currentUser }, canDelete () { if (!this.currentUser) { return } - const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin - return superuser || this.status.user.id === this.currentUser.id + return this.currentUser.privileges.includes('messages_delete') || this.status.user.id === this.currentUser.id }, ownStatus () { return this.status.user.id === this.currentUser.id From 56d1232588cac825b960782868e2ea3148371f33 Mon Sep 17 00:00:00 2001 From: Ilja Date: Sat, 6 Aug 2022 22:33:38 +0200 Subject: [PATCH 12/84] Show moderation drop down menu and items based on privileges There's a seperator between certain blocks of items. I show/hide the seperator together with the block under it. When a block with a seperator is at the top, the seperator doesn't show, keeping a consistent look with seperators only between blocks. I also hide granting roles for deactivated accounts because that doesn't make much sense to me. For the rest the items are hidden when you're not privileged. When there's no privileges that show items, the menu isn't shown either. --- .../moderation_tools/moderation_tools.js | 16 ++++++++++++++-- .../moderation_tools/moderation_tools.vue | 9 ++++++--- src/components/user_card/user_card.js | 4 ++++ src/components/user_card/user_card.vue | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/components/moderation_tools/moderation_tools.js b/src/components/moderation_tools/moderation_tools.js index 2469327a..a5ce8656 100644 --- a/src/components/moderation_tools/moderation_tools.js +++ b/src/components/moderation_tools/moderation_tools.js @@ -41,14 +41,26 @@ const ModerationTools = { tagsSet () { return new Set(this.user.tags) }, - hasTagPolicy () { - return this.$store.state.instance.tagPolicyAvailable + canGrantRole () { + return this.user.is_local && !this.user.deactivated && this.$store.state.users.currentUser.role === 'admin' + }, + canChangeActivationState () { + return this.privileged('users_manage_activation_state') + }, + canDeleteAccount () { + return this.privileged('users_delete') + }, + canUseTagPolicy () { + return this.$store.state.instance.tagPolicyAvailable && this.privileged('users_manage_tags') } }, methods: { hasTag (tagName) { return this.tagsSet.has(tagName) }, + privileged (privilege) { + return this.$store.state.users.currentUser.privileges.includes(privilege) + }, toggleTag (tag) { const store = this.$store if (this.tagsSet.has(tag)) { diff --git a/src/components/moderation_tools/moderation_tools.vue b/src/components/moderation_tools/moderation_tools.vue index 34fe2e7c..8535ef27 100644 --- a/src/components/moderation_tools/moderation_tools.vue +++ b/src/components/moderation_tools/moderation_tools.vue @@ -10,7 +10,7 @@ > - - From 66014fcfcb386f4110ff0a6056e45e61af434ea3 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 28 Sep 2022 21:34:53 +0300 Subject: [PATCH 28/84] port changes to notifications --- .../notifications/notification_filters.vue | 19 ------------ .../notifications/notifications.scss | 20 +++++++++++++ .../notifications/notifications.vue | 30 +++++++++++-------- 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/components/notifications/notification_filters.vue b/src/components/notifications/notification_filters.vue index b0213167..1315b51a 100644 --- a/src/components/notifications/notification_filters.vue +++ b/src/components/notifications/notification_filters.vue @@ -109,22 +109,3 @@ export default { } } - - diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss index f71f9b76..f4a3e099 100644 --- a/src/components/notifications/notifications.scss +++ b/src/components/notifications/notifications.scss @@ -29,6 +29,26 @@ } } } + + .timeline-header-button { + align-self: stretch; + text-align: center; + width: var(--__panel-heading-height); + height: var(--__panel-heading-height); + margin: calc(-1 * var(--panel-heading-height-padding)); + + > button { + box-sizing: border-box; + padding: calc(1 * var(--panel-heading-height-padding)); + height: 100%; + width: 100%; + text-align: center; + + svg { + font-size: 1.2em; + } + } + } } .notification { diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue index 08d65439..22f67e65 100644 --- a/src/components/notifications/notifications.vue +++ b/src/components/notifications/notifications.vue @@ -20,20 +20,24 @@ class="badge badge-notification unseen-count" >{{ unseenCount }}
- + + - +
Date: Thu, 29 Sep 2022 11:49:19 +0300 Subject: [PATCH 29/84] fix buttons overlapping --- src/components/notifications/notifications.scss | 5 +++-- src/components/timeline/timeline.scss | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss index f4a3e099..b57dfb3a 100644 --- a/src/components/notifications/notifications.scss +++ b/src/components/notifications/notifications.scss @@ -35,11 +35,12 @@ text-align: center; width: var(--__panel-heading-height); height: var(--__panel-heading-height); - margin: calc(-1 * var(--panel-heading-height-padding)); + margin: calc(-1 * var(--panel-heading-height-padding)) 0; + margin-right: -0.5em; > button { box-sizing: border-box; - padding: calc(1 * var(--panel-heading-height-padding)); + padding: calc(1 * var(--panel-heading-height-padding)) 0; height: 100%; width: 100%; text-align: center; diff --git a/src/components/timeline/timeline.scss b/src/components/timeline/timeline.scss index c38ecfea..18a80a63 100644 --- a/src/components/timeline/timeline.scss +++ b/src/components/timeline/timeline.scss @@ -18,11 +18,12 @@ text-align: center; width: var(--__panel-heading-height); height: var(--__panel-heading-height); - margin: calc(-1 * var(--panel-heading-height-padding)); + margin: calc(-1 * var(--panel-heading-height-padding)) 0; + margin-right: -0.5em; > button { box-sizing: border-box; - padding: calc(1 * var(--panel-heading-height-padding)); + padding: calc(1 * var(--panel-heading-height-padding)) 0; height: 100%; width: 100%; text-align: center; @@ -37,6 +38,7 @@ align-self: stretch; text-align: center; width: var(--__panel-heading-height); + margin-right: -0.5em; svg { font-size: 1.2em; From ce6ce4b6cdd3aea2712ce73c0b0fd9d64372ac8e Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Thu, 29 Sep 2022 11:52:48 +0300 Subject: [PATCH 30/84] minor improvements --- src/components/notifications/notifications.scss | 2 +- src/components/timeline/timeline.scss | 4 ++-- src/components/timeline/timeline.vue | 6 ++++-- src/panel.scss | 3 ++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss index b57dfb3a..245e3f47 100644 --- a/src/components/notifications/notifications.scss +++ b/src/components/notifications/notifications.scss @@ -36,7 +36,7 @@ width: var(--__panel-heading-height); height: var(--__panel-heading-height); margin: calc(-1 * var(--panel-heading-height-padding)) 0; - margin-right: -0.5em; + margin-right: calc(-1 * var(--__panel-heading-gap)); > button { box-sizing: border-box; diff --git a/src/components/timeline/timeline.scss b/src/components/timeline/timeline.scss index 18a80a63..f5dbb639 100644 --- a/src/components/timeline/timeline.scss +++ b/src/components/timeline/timeline.scss @@ -19,7 +19,7 @@ width: var(--__panel-heading-height); height: var(--__panel-heading-height); margin: calc(-1 * var(--panel-heading-height-padding)) 0; - margin-right: -0.5em; + margin-right: calc(-1 * var(--__panel-heading-gap)); > button { box-sizing: border-box; @@ -38,7 +38,7 @@ align-self: stretch; text-align: center; width: var(--__panel-heading-height); - margin-right: -0.5em; + margin-right: calc(-1 * var(--__panel-heading-gap)); svg { font-size: 1.2em; diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue index fe5d4822..15d097e8 100644 --- a/src/components/timeline/timeline.vue +++ b/src/components/timeline/timeline.vue @@ -5,9 +5,11 @@ v-if="!embedded" :timeline-name="timelineName" /> -
+
diff --git a/src/components/notifications/notifications.scss b/src/components/notifications/notifications.scss index 245e3f47..f71f9b76 100644 --- a/src/components/notifications/notifications.scss +++ b/src/components/notifications/notifications.scss @@ -29,27 +29,6 @@ } } } - - .timeline-header-button { - align-self: stretch; - text-align: center; - width: var(--__panel-heading-height); - height: var(--__panel-heading-height); - margin: calc(-1 * var(--panel-heading-height-padding)) 0; - margin-right: calc(-1 * var(--__panel-heading-gap)); - - > button { - box-sizing: border-box; - padding: calc(1 * var(--panel-heading-height-padding)) 0; - height: 100%; - width: 100%; - text-align: center; - - svg { - font-size: 1.2em; - } - } - } } .notification { diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue index 22f67e65..3f4b1b42 100644 --- a/src/components/notifications/notifications.vue +++ b/src/components/notifications/notifications.vue @@ -21,7 +21,7 @@ >{{ unseenCount }}
- +
button { - box-sizing: border-box; - padding: calc(1 * var(--panel-heading-height-padding)) 0; - height: 100%; - width: 100%; - text-align: center; - - svg { - font-size: 1.2em; - } - } - } - - .timeline-header-icon { - align-self: stretch; - text-align: center; - width: var(--__panel-heading-height); - margin-right: calc(-1 * var(--__panel-heading-gap)); - - svg { - font-size: 1.2em; - } - } - .loadmore-button { position: relative } diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue index 15d097e8..77480345 100644 --- a/src/components/timeline/timeline.vue +++ b/src/components/timeline/timeline.vue @@ -6,7 +6,7 @@ :timeline-name="timelineName" />
button { + box-sizing: border-box; + padding: calc(1 * var(--panel-heading-height-padding)) 0; + height: 100%; + width: 100%; + text-align: center; + + svg { + font-size: 1.2em; + } + } + } + + .rightside-icon { + align-self: stretch; + text-align: center; + width: var(--__panel-heading-height); + margin-right: calc(-1 * var(--__panel-heading-gap)); + + svg { + font-size: 1.2em; + } + } } .panel-footer { From cf9957c7332f30db12fce8a2b1d21d9ba508537b Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 9 Oct 2022 19:00:25 +0300 Subject: [PATCH 32/84] fix alert dot --- src/components/navigation/navigation_pins.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/navigation/navigation_pins.vue b/src/components/navigation/navigation_pins.vue index 5b3fa6f4..9cb4b536 100644 --- a/src/components/navigation/navigation_pins.vue +++ b/src/components/navigation/navigation_pins.vue @@ -39,10 +39,8 @@ height: 0.5em; width: 0.5em; position: absolute; - right: calc(50% - 0.25em); - top: calc(50% - 0.25em); - margin-left: 6px; - margin-top: -6px; + right: calc(50% - 0.75em); + top: calc(50% - 0.5em); background-color: $fallback--cRed; background-color: var(--badgeNotification, $fallback--cRed); } From 8b957fb85e6668d9c1cf771c788bb619f5cedf93 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 9 Oct 2022 19:04:45 +0300 Subject: [PATCH 33/84] fix chevrons alignment --- src/components/nav_panel/nav_panel.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/nav_panel/nav_panel.vue b/src/components/nav_panel/nav_panel.vue index 7373ca63..d628c380 100644 --- a/src/components/nav_panel/nav_panel.vue +++ b/src/components/nav_panel/nav_panel.vue @@ -12,7 +12,7 @@ @click="toggleCollapse" > @@ -143,12 +143,17 @@ border: none; } - .timelines-chevron { + .navigation-chevron { margin-left: 0.8em; margin-right: 0.8em; font-size: 1.1em; } + .timelines-chevron { + margin-left: 0.8em; + font-size: 1.1em; + } + .timelines-background { padding: 0 0 0 0.6em; background-color: $fallback--lightBg; From 4631b1b9f7e7813cab65e0d0705cd1e265f23393 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 9 Oct 2022 22:09:50 +0300 Subject: [PATCH 34/84] suggestor popover --- src/components/emoji_input/emoji_input.js | 80 ++++++++----- src/components/emoji_input/emoji_input.vue | 128 +++++++++++---------- src/components/popover/popover.js | 11 +- src/components/popover/popover.vue | 2 +- 4 files changed, 127 insertions(+), 94 deletions(-) diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js index ffc0ffac..b365043c 100644 --- a/src/components/emoji_input/emoji_input.js +++ b/src/components/emoji_input/emoji_input.js @@ -1,5 +1,6 @@ import Completion from '../../services/completion/completion.js' import EmojiPicker from '../emoji_picker/emoji_picker.vue' +import Popover from 'src/components/popover/popover.vue' import UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue' import { take } from 'lodash' import { findOffset } from '../../services/offset_finder/offset_finder.service.js' @@ -109,6 +110,7 @@ const EmojiInput = { data () { return { input: undefined, + caretEl: undefined, highlighted: 0, caret: 0, focused: false, @@ -117,10 +119,12 @@ const EmojiInput = { temporarilyHideSuggestions: false, keepOpen: false, disableClickOutside: false, - suggestions: [] + suggestions: [], + overlayStyle: {} } }, components: { + Popover, EmojiPicker, UnicodeDomainIndicator }, @@ -128,7 +132,15 @@ const EmojiInput = { padEmoji () { return this.$store.getters.mergedConfig.padEmoji }, + preText () { + return this.modelValue.slice(0, this.caret) + }, + postText () { + return this.modelValue.slice(this.caret) + }, showSuggestions () { + console.log(this.focused) + console.log(this.suggestions) return this.focused && this.suggestions && this.suggestions.length > 0 && @@ -191,10 +203,21 @@ const EmojiInput = { } }, mounted () { - const { root } = this.$refs + const { root, hiddenOverlayCaret, suggestorPopover } = this.$refs const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea') if (!input) return this.input = input + this.caretEl = hiddenOverlayCaret + suggestorPopover.setAnchorEl(this.caretEl) + const style = getComputedStyle(this.input) + this.overlayStyle.padding = style.padding + this.overlayStyle.border = style.border + this.overlayStyle.margin = style.margin + this.overlayStyle.lineHeight = style.lineHeight + this.overlayStyle.fontFamily = style.fontFamily + this.overlayStyle.fontSize = style.fontSize + this.overlayStyle.wordWrap = style.wordWrap + this.overlayStyle.whiteSpace = style.whiteSpace this.resize() input.addEventListener('blur', this.onBlur) input.addEventListener('focus', this.onFocus) @@ -204,6 +227,16 @@ const EmojiInput = { input.addEventListener('click', this.onClickInput) input.addEventListener('transitionend', this.onTransition) input.addEventListener('input', this.onInput) + input.addEventListener('scroll', (e) => { + console.log({ + top: this.input.scrollTop, + left: this.input.scrollLeft + }) + this.$refs.hiddenOverlay.scrollTo({ + top: this.input.scrollTop, + left: this.input.scrollLeft + }) + }) }, unmounted () { const { input } = this @@ -219,22 +252,32 @@ const EmojiInput = { } }, watch: { - showSuggestions: function (newValue) { + showSuggestions: function (newValue, oldValue) { this.$emit('shown', newValue) + if (newValue) { + this.$refs.suggestorPopover.showPopover() + } else { + this.$refs.suggestorPopover.hidePopover() + } }, textAtCaret: async function (newWord) { const firstchar = newWord.charAt(0) - this.suggestions = [] - if (newWord === firstchar) return + if (newWord === firstchar) { + this.suggestions = [] + return + } const matchedSuggestions = await this.suggest(newWord, this.maybeLocalizedEmojiNamesAndKeywords) // Async: cancel if textAtCaret has changed during wait - if (this.textAtCaret !== newWord) return - if (matchedSuggestions.length <= 0) return + if (this.textAtCaret !== newWord || matchedSuggestions.length <= 0) { + this.suggestions = [] + return + } this.suggestions = take(matchedSuggestions, 5) .map(({ imageUrl, ...rest }) => ({ ...rest, img: imageUrl || '' })) + this.$refs.suggestorPopover.updateStyles() }, suggestions: { handler (newValue) { @@ -525,29 +568,6 @@ const EmojiInput = { this.caret = selectionStart }, resize () { - const panel = this.$refs.panel - if (!panel) return - const picker = this.$refs.picker.$el - const panelBody = this.$refs['panel-body'] - const { offsetHeight, offsetTop } = this.input - const offsetBottom = offsetTop + offsetHeight - - this.setPlacement(panelBody, panel, offsetBottom) - this.setPlacement(picker, picker, offsetBottom) - }, - setPlacement (container, target, offsetBottom) { - if (!container || !target) return - - target.style.top = offsetBottom + 'px' - target.style.bottom = 'auto' - - if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) { - target.style.top = 'auto' - target.style.bottom = this.input.offsetHeight + 'px' - } - }, - overflowsBottom (el) { - return el.getBoundingClientRect().bottom > window.innerHeight } } } diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue index 43581dbf..8a4bc244 100644 --- a/src/components/emoji_input/emoji_input.vue +++ b/src/components/emoji_input/emoji_input.vue @@ -6,6 +6,12 @@ :class="{ 'with-picker': !hideEmojiButton }" > + +
+ {{ preText }} + x + {{ postText }} +
-
-
+ +
@@ -102,6 +110,7 @@ color: var(--text, $fallback--text); } } + .emoji-picker-panel { position: absolute; z-index: 20; @@ -115,31 +124,6 @@ .autocomplete { &-panel { position: absolute; - z-index: 20; - margin-top: 2px; - - &.hide { - display: none - } - - &-body { - margin: 0 0.5em 0 0.5em; - border-radius: $fallback--tooltipRadius; - border-radius: var(--tooltipRadius, $fallback--tooltipRadius); - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); - box-shadow: var(--popupShadow); - min-width: 75%; - background-color: $fallback--bg; - background-color: var(--popover, $fallback--bg); - color: $fallback--link; - color: var(--popoverText, $fallback--link); - --faint: var(--popoverFaintText, $fallback--faint); - --faintLink: var(--popoverFaintLink, $fallback--faint); - --lightText: var(--popoverLightText, $fallback--lightText); - --postLink: var(--popoverPostLink, $fallback--link); - --postFaintLink: var(--popoverPostFaintLink, $fallback--link); - --icon: var(--popoverIcon, $fallback--icon); - } } &-item { @@ -196,5 +180,25 @@ input, textarea { flex: 1 0 auto; } + + .hidden-overlay { + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: 0; + overflow: hidden; + /* DEBUG STUFF */ + color: red; + /* set opacity to non-zero to see the overlay */ + + .caret { + width: 0; + margin-right: calc(-1ch - 1px); + border: 1px solid red; + } + } } diff --git a/src/components/popover/popover.js b/src/components/popover/popover.js index dd332c35..60c42f0f 100644 --- a/src/components/popover/popover.js +++ b/src/components/popover/popover.js @@ -51,6 +51,10 @@ const Popover = { // lockReEntry is a flag that is set when mouse cursor is leaving the popover's content // so that if mouse goes back into popover it won't be re-shown again to prevent annoyance // with popovers refusing to be hidden when user wants to interact with something in below popover + anchorEl: null, + // There's an issue where having teleport enabled by default causes things just... + // not render at all, i.e. main post status form and its emoji inputs + teleport: false, lockReEntry: false, hidden: true, styles: {}, @@ -63,6 +67,10 @@ const Popover = { } }, methods: { + setAnchorEl (el) { + this.anchorEl = el + this.updateStyles() + }, containerBoundingClientRect () { const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent return container.getBoundingClientRect() @@ -75,7 +83,7 @@ const Popover = { // Popover will be anchored around this element, trigger ref is the container, so // its children are what are inside the slot. Expect only one v-slot:trigger. - const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el + const anchorEl = this.anchorEl || (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el // SVGs don't have offsetWidth/Height, use fallback const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth @@ -319,6 +327,7 @@ const Popover = { } }, mounted () { + this.teleport = true let scrollable = this.$refs.trigger.closest('.column.-scrollable') || this.$refs.trigger.closest('.mobile-notifications') if (!scrollable) scrollable = window diff --git a/src/components/popover/popover.vue b/src/components/popover/popover.vue index 623af8d2..217eba7c 100644 --- a/src/components/popover/popover.vue +++ b/src/components/popover/popover.vue @@ -11,7 +11,7 @@ > - +
Date: Sun, 9 Oct 2022 23:01:49 +0300 Subject: [PATCH 35/84] moved popovers space outside app because otherwise it causes weird issues A LOT --- index.html | 1 + src/App.vue | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index ba072eda..4af84a59 100644 --- a/index.html +++ b/index.html @@ -10,5 +10,6 @@
+
diff --git a/src/App.vue b/src/App.vue index e0d709f7..060fa70a 100644 --- a/src/App.vue +++ b/src/App.vue @@ -73,7 +73,6 @@
Date: Mon, 10 Oct 2022 20:26:32 +0300 Subject: [PATCH 43/84] better autocomplete handling, fix leak --- src/components/emoji_input/emoji_input.js | 24 +++++++++++------------ 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js index 92c10f09..144b7c72 100644 --- a/src/components/emoji_input/emoji_input.js +++ b/src/components/emoji_input/emoji_input.js @@ -145,7 +145,7 @@ const EmojiInput = { !this.temporarilyHideSuggestions }, textAtCaret () { - return (this.wordAtCaret || {}).word || '' + return this.wordAtCaret?.word }, wordAtCaret () { if (this.modelValue && this.caret) { @@ -197,6 +197,12 @@ const EmojiInput = { return emoji.displayText } + }, + onInputScroll () { + this.$refs.hiddenOverlay.scrollTo({ + top: this.input.scrollTop, + left: this.input.scrollLeft + }) } }, mounted () { @@ -225,13 +231,7 @@ const EmojiInput = { input.addEventListener('click', this.onClickInput) input.addEventListener('transitionend', this.onTransition) input.addEventListener('input', this.onInput) - // FIXME LEAK - input.addEventListener('scroll', (e) => { - this.$refs.hiddenOverlay.scrollTo({ - top: this.input.scrollTop, - left: this.input.scrollLeft - }) - }) + input.addEventListener('scroll', this.onInputScroll) }, unmounted () { const { input } = this @@ -244,6 +244,7 @@ const EmojiInput = { input.removeEventListener('click', this.onClickInput) input.removeEventListener('transitionend', this.onTransition) input.removeEventListener('input', this.onInput) + input.removeEventListener('scroll', this.onInputScroll) } }, watch: { @@ -256,11 +257,10 @@ const EmojiInput = { } }, textAtCaret: async function (newWord) { + if (newWord === undefined) return const firstchar = newWord.charAt(0) if (newWord === firstchar) { - if (firstchar === ' ') { - this.suggestions = [] - } + this.suggestions = [] return } const matchedSuggestions = await this.suggest(newWord, this.maybeLocalizedEmojiNamesAndKeywords) @@ -292,10 +292,8 @@ const EmojiInput = { }, 0) }, togglePicker () { - console.log('piick') this.input.focus() if (!this.pickerShown) { - console.log('pick') this.scrollIntoView() this.$refs.picker.showPicker() this.$refs.picker.startEmojiLoad() From 4a1ffced44c41be5c4ba60c5b8678b200c328a40 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 10 Oct 2022 22:04:49 +0300 Subject: [PATCH 44/84] fix unit tests --- src/components/emoji_input/emoji_input.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js index 144b7c72..3d3c58ac 100644 --- a/src/components/emoji_input/emoji_input.js +++ b/src/components/emoji_input/emoji_input.js @@ -211,8 +211,12 @@ const EmojiInput = { if (!input) return this.input = input this.caretEl = hiddenOverlayCaret - suggestorPopover.setAnchorEl(this.caretEl) - this.$refs.picker.setAnchorEl(this.caretEl) + if (suggestorPopover.setAnchorEl) { + suggestorPopover.setAnchorEl(this.caretEl) // unit test compat + this.$refs.picker.setAnchorEl(this.caretEl) + } else { + console.warn('setAnchorEl not found, are we in a unit test?') + } const style = getComputedStyle(this.input) this.overlayStyle.padding = style.padding this.overlayStyle.border = style.border From 11f9a7ba2719ff4ddb84be39d9e83519c1d0f534 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 17 Oct 2022 21:23:25 +0300 Subject: [PATCH 45/84] update popover styles when caret updates --- src/components/emoji_input/emoji_input.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/emoji_input/emoji_input.js b/src/components/emoji_input/emoji_input.js index 3d3c58ac..ba5f7552 100644 --- a/src/components/emoji_input/emoji_input.js +++ b/src/components/emoji_input/emoji_input.js @@ -278,7 +278,6 @@ const EmojiInput = { ...rest, img: imageUrl || '' })) - this.$refs.suggestorPopover.updateStyles() } }, methods: { @@ -536,6 +535,9 @@ const EmojiInput = { }, setCaret ({ target: { selectionStart } }) { this.caret = selectionStart + this.$nextTick(() => { + this.$refs.suggestorPopover.updateStyles() + }) }, resize () { } From 1435b65e36a21dd3a05a9393803beb7e06bcd4ae Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 17 Oct 2022 21:50:37 +0300 Subject: [PATCH 46/84] add titles to mobile buttons --- src/components/notifications/notifications.vue | 1 + src/components/timeline/timeline.vue | 3 +++ src/i18n/en.json | 1 + 3 files changed, 5 insertions(+) diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue index 3f4b1b42..f9c90a7e 100644 --- a/src/components/notifications/notifications.vue +++ b/src/components/notifications/notifications.vue @@ -27,6 +27,7 @@
-
-
+
Date: Mon, 7 Nov 2022 13:22:40 -0500 Subject: [PATCH 70/84] Add labels for timeline header --- src/components/popover/popover.js | 7 ++++++- src/components/popover/popover.vue | 1 + .../quick_filter_settings/quick_filter_settings.vue | 5 ++--- src/components/quick_view_settings/quick_view_settings.vue | 5 ++--- src/components/timeline/timeline.vue | 1 + src/i18n/en.json | 4 +++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/components/popover/popover.js b/src/components/popover/popover.js index dd332c35..72b7c511 100644 --- a/src/components/popover/popover.js +++ b/src/components/popover/popover.js @@ -43,7 +43,12 @@ const Popover = { overlayCentersSelector: String, // Lets hover popover stay when clicking inside of it - stayOnClick: Boolean + stayOnClick: Boolean, + + triggerAttrs: { + type: Object, + default: {} + } }, inject: ['popoversZLayer'], // override popover z layer data () { diff --git a/src/components/popover/popover.vue b/src/components/popover/popover.vue index 623af8d2..9506728e 100644 --- a/src/components/popover/popover.vue +++ b/src/components/popover/popover.vue @@ -7,6 +7,7 @@ ref="trigger" class="button-unstyled popover-trigger-button" type="button" + v-bind="triggerAttrs" @click="onClick" > diff --git a/src/components/quick_filter_settings/quick_filter_settings.vue b/src/components/quick_filter_settings/quick_filter_settings.vue index 54ea037e..87fcd716 100644 --- a/src/components/quick_filter_settings/quick_filter_settings.vue +++ b/src/components/quick_filter_settings/quick_filter_settings.vue @@ -3,6 +3,7 @@ trigger="click" class="QuickFilterSettings" :bound-to="{ x: 'container' }" + :triggerAttrs="{ title: $t('timeline.quick_filter_settings') }" > diff --git a/src/components/quick_view_settings/quick_view_settings.vue b/src/components/quick_view_settings/quick_view_settings.vue index b0413cac..d7c9bf3b 100644 --- a/src/components/quick_view_settings/quick_view_settings.vue +++ b/src/components/quick_view_settings/quick_view_settings.vue @@ -3,6 +3,7 @@ trigger="click" class="QuickViewSettings" :bound-to="{ x: 'container' }" + :triggerAttrs="{ title: $t('timeline.quick_view_settings') }" > diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue index 8a036fd0..15cf043e 100644 --- a/src/components/timeline/timeline.vue +++ b/src/components/timeline/timeline.vue @@ -47,6 +47,7 @@ v-else-if="!embedded" class="loadmore-text faint veryfaint rightside-icon" :title="$t('timeline.up_to_date')" + :aria-disabled="true" @click.prevent > Date: Mon, 7 Nov 2022 13:39:48 -0500 Subject: [PATCH 71/84] Add labels to mobile navs --- src/components/mobile_nav/mobile_nav.vue | 5 +++++ src/i18n/en.json | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/mobile_nav/mobile_nav.vue b/src/components/mobile_nav/mobile_nav.vue index 264bc713..ee360f80 100644 --- a/src/components/mobile_nav/mobile_nav.vue +++ b/src/components/mobile_nav/mobile_nav.vue @@ -10,6 +10,8 @@
-
+
- + + @goto="setHighlight" + @toggleExpanded="toggleExpanded" + /> +
diff --git a/src/components/thread_tree/thread_tree.vue b/src/components/thread_tree/thread_tree.vue index 4eaf597d..c6fffc71 100644 --- a/src/components/thread_tree/thread_tree.vue +++ b/src/components/thread_tree/thread_tree.vue @@ -1,5 +1,5 @@ diff --git a/src/components/timeline/timeline.vue b/src/components/timeline/timeline.vue index 15cf043e..f561d974 100644 --- a/src/components/timeline/timeline.vue +++ b/src/components/timeline/timeline.vue @@ -79,10 +79,12 @@
Date: Tue, 8 Nov 2022 00:23:08 -0500 Subject: [PATCH 73/84] Make user panel and notification
-
-
+ -
+ From a34bea75a808de9841f616896ebb630972475707 Mon Sep 17 00:00:00 2001 From: tusooa Date: Tue, 8 Nov 2022 00:37:22 -0500 Subject: [PATCH 74/84] Handle properly 2-col and 3-col desktop notifications --- src/App.vue | 2 +- src/components/notifications/notifications.vue | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/App.vue b/src/App.vue index 12b4f61b..8dad8ce9 100644 --- a/src/App.vue +++ b/src/App.vue @@ -30,7 +30,7 @@ -
-
+ From 17aa503106f129e391f8478ade6821f09ef7494a Mon Sep 17 00:00:00 2001 From: tusooa Date: Tue, 8 Nov 2022 00:43:33 -0500 Subject: [PATCH 75/84] Make notification panel a list of articles --- src/components/notification/notification.vue | 17 ++++++++++------- src/components/notifications/notifications.vue | 6 +++++- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/components/notification/notification.vue b/src/components/notification/notification.vue index 26b174ff..84f3f7de 100644 --- a/src/components/notification/notification.vue +++ b/src/components/notification/notification.vue @@ -1,11 +1,14 @@ diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue index 7ed419d1..02a87fcc 100644 --- a/src/components/notifications/notifications.vue +++ b/src/components/notifications/notifications.vue @@ -50,10 +50,14 @@
-
+
From d8135228bf1fed0ccb03ec4d00a139a2eb32ff4b Mon Sep 17 00:00:00 2001 From: Pleroma Renovate Bot Date: Tue, 8 Nov 2022 09:06:02 +0000 Subject: [PATCH 76/84] Update dependency chai to v4.3.7 --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 18b4e728..40f0fa38 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "autoprefixer": "10.4.12", "babel-loader": "8.2.5", "babel-plugin-lodash": "3.3.4", - "chai": "4.3.6", + "chai": "4.3.7", "chalk": "1.1.3", "chromedriver": "104.0.0", "connect-history-api-fallback": "2.0.0", diff --git a/yarn.lock b/yarn.lock index 8fcec0ce..6c43f5a6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2890,14 +2890,14 @@ chai-nightwatch@0.5.3: dependencies: assertion-error "1.1.0" -chai@4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" - integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== +chai@4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" + integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== dependencies: assertion-error "^1.1.0" check-error "^1.0.2" - deep-eql "^3.0.1" + deep-eql "^4.1.2" get-func-name "^2.0.0" loupe "^2.3.1" pathval "^1.1.1" @@ -3474,10 +3474,10 @@ deep-eql@4.0.1: dependencies: type-detect "^4.0.0" -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== +deep-eql@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.2.tgz#270ceb902f87724077e6f6449aed81463f42fc1c" + integrity sha512-gT18+YW4CcW/DBNTwAmqTtkJh7f9qqScu2qFVlx7kCoeY9tlBu9cUcr7+I+Z/noG8INehS3xQgLpTtd/QUTn4w== dependencies: type-detect "^4.0.0" From b718c0c77d16bf917dc564404cb0fa61a2c535b3 Mon Sep 17 00:00:00 2001 From: tusooa Date: Tue, 8 Nov 2022 10:34:38 -0500 Subject: [PATCH 77/84] Use feed role for notifs and timelines --- src/components/notifications/notifications.vue | 2 +- src/components/timeline/timeline.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/notifications/notifications.vue b/src/components/notifications/notifications.vue index 02a87fcc..3d5878d4 100644 --- a/src/components/notifications/notifications.vue +++ b/src/components/notifications/notifications.vue @@ -52,7 +52,7 @@
Date: Wed, 9 Nov 2022 19:32:49 +0000 Subject: [PATCH 78/84] Apply 1 suggestion(s) to 1 file(s) --- src/components/staff_panel/staff_panel.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/staff_panel/staff_panel.js b/src/components/staff_panel/staff_panel.js index 91f5e910..46a92ac7 100644 --- a/src/components/staff_panel/staff_panel.js +++ b/src/components/staff_panel/staff_panel.js @@ -14,7 +14,6 @@ const StaffPanel = { computed: { groupedStaffAccounts () { const staffAccounts = map(this.staffAccounts, this.findUserByName).filter(_ => _) - console.log(staffAccounts) const groupedStaffAccounts = groupBy(staffAccounts, 'role') return [ From 96d45617e24980dd60798bcd5bbf9dd67d72c20e Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 21 Nov 2022 21:44:03 +0200 Subject: [PATCH 79/84] make better defaults for user popovers, closer to OG behavior --- src/modules/config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/config.js b/src/modules/config.js index c966602e..3cd6888f 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -83,8 +83,8 @@ export const defaultState = { useContainFit: true, disableStickyHeaders: false, showScrollbars: false, - userPopoverAvatarAction: 'close', - userPopoverOverlay: true, + userPopoverAvatarAction: 'open', + userPopoverOverlay: false, sidebarColumnWidth: '25rem', contentColumnWidth: '45rem', notifsColumnWidth: '25rem', From 3c0e7882b10989424c3ec98413b555373efa1719 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Mon, 21 Nov 2022 22:17:33 +0200 Subject: [PATCH 80/84] lint --- src/components/emoji_input/emoji_input.vue | 13 ++++++++++--- src/components/emoji_picker/emoji_picker.vue | 4 ++-- src/components/mobile_nav/mobile_nav.vue | 6 +++--- src/components/notifications/notifications.vue | 2 +- src/components/popover/popover.vue | 5 ++++- .../quick_filter_settings.vue | 2 +- .../quick_view_settings/quick_view_settings.vue | 2 +- src/components/search/search.js | 4 ++-- src/components/timeline/timeline.vue | 14 ++++++++++---- 9 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/components/emoji_input/emoji_input.vue b/src/components/emoji_input/emoji_input.vue index 63bf856e..c9bbc18f 100644 --- a/src/components/emoji_input/emoji_input.vue +++ b/src/components/emoji_input/emoji_input.vue @@ -6,9 +6,16 @@ > -
+
{{ preText }} - x + x {{ postText }}