Merge branch 'setttingssync' into shigusegubu-themes3

This commit is contained in:
Henry Jameson 2026-03-06 17:55:38 +02:00
commit 11045fd81c
7 changed files with 65 additions and 59 deletions

View file

@ -55,11 +55,13 @@ const MobileNav = {
return unseenNotificationsFromStore( return unseenNotificationsFromStore(
this.$store, this.$store,
useSyncConfigStore().mergedConfig.notificationVisibility, useSyncConfigStore().mergedConfig.notificationVisibility,
useSyncConfigStore().mergedConfig.ignoreInactionableSeen,
) )
}, },
unseenNotificationsCount() { unseenNotificationsCount() {
return ( return (
this.unseenNotifications.length + countExtraNotifications(this.$store) this.unseenNotifications.length +
countExtraNotifications(this.$store, useSyncConfigStore().mergedConfig)
) )
}, },
unseenCount() { unseenCount() {

View file

@ -111,7 +111,10 @@ const Notifications = {
return useSyncConfigStore().mergedConfig.ignoreInactionableSeen return useSyncConfigStore().mergedConfig.ignoreInactionableSeen
}, },
extraNotificationsCount() { extraNotificationsCount() {
return countExtraNotifications(this.$store) return countExtraNotifications(
this.$store,
useSyncConfigStore().mergedConfig,
)
}, },
unseenCountTitle() { unseenCountTitle() {
return ( return (

View file

@ -107,8 +107,8 @@
<div class="column-settings"> <div class="column-settings">
<UnitSetting <UnitSetting
v-for="column in columns" v-for="column in columns"
:local="true"
:key="column" :key="column"
:local="true"
:path="column + 'ColumnWidth'" :path="column + 'ColumnWidth'"
:units="horizontalUnits" :units="horizontalUnits"
expert="1" expert="1"

View file

@ -1,7 +1,6 @@
import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js' import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'
import { muteFilterHits } from '../status_parser/status_parser.js' import { muteFilterHits } from '../status_parser/status_parser.js'
import { useSyncConfigStore } from 'src/stores/sync_config.js'
import { useAnnouncementsStore } from 'src/stores/announcements.js' import { useAnnouncementsStore } from 'src/stores/announcements.js'
import { useI18nStore } from 'src/stores/i18n.js' import { useI18nStore } from 'src/stores/i18n.js'
@ -101,15 +100,16 @@ export const filteredNotificationsFromStore = (
.map((_) => _) .map((_) => _)
.sort(sortById) .sort(sortById)
// TODO implement sorting elsewhere and make it optional // TODO implement sorting elsewhere and make it optional
console.log(types, visibleTypes(notificationVisibility))
return sortedNotifications.filter((notification) => return sortedNotifications.filter((notification) =>
(types || visibleTypes(notificationVisibility)).includes(notification.type), (types || visibleTypes(notificationVisibility)).includes(notification.type),
) )
} }
export const unseenNotificationsFromStore = (store, notificationVisibility) => { export const unseenNotificationsFromStore = (
const ignoreInactionableSeen = useSyncConfigStore().mergedConfig.ignoreInactionableSeen store,
notificationVisibility,
ignoreInactionableSeen,
) => {
return filteredNotificationsFromStore(store, notificationVisibility).filter( return filteredNotificationsFromStore(store, notificationVisibility).filter(
({ seen, type }) => { ({ seen, type }) => {
if (!ignoreInactionableSeen) return !seen if (!ignoreInactionableSeen) return !seen
@ -189,7 +189,9 @@ export const prepareNotificationObject = (notification, i18n) => {
return notifObj return notifObj
} }
export const countExtraNotifications = (mergedConfig) => { export const countExtraNotifications = (store, mergedConfig) => {
const rootGetters = store.rootGetters || store.getters
if (!mergedConfig.showExtraNotifications) { if (!mergedConfig.showExtraNotifications) {
return 0 return 0
} }

View file

@ -103,11 +103,7 @@ describe('Gallery', () => {
// No grouping of non-image items // No grouping of non-image items
local = { local = {
attachments: [ attachments: [{ type: 'plain' }, { type: 'plain' }, { type: 'plain' }],
{ type: 'plain' },
{ type: 'plain' },
{ type: 'plain' },
],
} }
expect(Gallery.computed.rows.call(local)).to.eql([ expect(Gallery.computed.rows.call(local)).to.eql([
{ minimal: true, items: [{ type: 'plain' }] }, { minimal: true, items: [{ type: 'plain' }] },
@ -174,11 +170,7 @@ describe('Gallery', () => {
expect(Gallery.computed.rows.call(local)).to.eql([ expect(Gallery.computed.rows.call(local)).to.eql([
{ {
items: [ items: [{ type: 'image' }, { type: 'image' }, { type: 'image' }],
{ type: 'image' },
{ type: 'image' },
{ type: 'image' },
],
}, },
{ items: [{ type: 'image' }] }, { items: [{ type: 'image' }] },
{ audio: true, items: [{ type: 'audio' }] }, { audio: true, items: [{ type: 'audio' }] },
@ -202,11 +194,7 @@ describe('Gallery', () => {
// https:/.pleroma.social-fe/-_requests#note_98514 // https:/.pleroma.social-fe/-_requests#note_98514
expect(Gallery.computed.rows.call(local)).to.eql([ expect(Gallery.computed.rows.call(local)).to.eql([
{ {
items: [ items: [{ type: 'image' }, { type: 'image' }, { type: 'image' }],
{ type: 'image' },
{ type: 'image' },
{ type: 'image' },
],
}, },
{ {
items: [ items: [
@ -233,18 +221,10 @@ describe('Gallery', () => {
expect(Gallery.computed.rows.call(local)).to.eql([ expect(Gallery.computed.rows.call(local)).to.eql([
{ {
items: [ items: [{ type: 'image' }, { type: 'image' }, { type: 'image' }],
{ type: 'image' },
{ type: 'image' },
{ type: 'image' },
],
}, },
{ {
items: [ items: [{ type: 'image' }, { type: 'image' }, { type: 'image' }],
{ type: 'image' },
{ type: 'image' },
{ type: 'image' },
],
}, },
{ items: [{ type: 'image' }, { type: 'image' }] }, { items: [{ type: 'image' }, { type: 'image' }] },
]) ])

View file

@ -53,13 +53,13 @@ describe('NotificationUtils', () => {
type: 'like', type: 'like',
}, },
] ]
expect(NotificationUtils.filteredNotificationsFromStore(store, { expect(
mentions: false, NotificationUtils.filteredNotificationsFromStore(store, {
likes: true, mentions: false,
repeats: true, likes: true,
})).to.eql( repeats: true,
expected, }),
) ).to.eql(expected)
}) })
}) })
@ -81,7 +81,7 @@ describe('NotificationUtils', () => {
}, },
], ],
}, },
} },
} }
const expected = [ const expected = [
{ {
@ -90,13 +90,13 @@ describe('NotificationUtils', () => {
seen: false, seen: false,
}, },
] ]
expect(NotificationUtils.unseenNotificationsFromStore(store, { expect(
likes: true, NotificationUtils.unseenNotificationsFromStore(store, {
repeats: true, likes: true,
mentions: false, repeats: true,
})).to.eql( mentions: false,
expected, }),
) ).to.eql(expected)
}) })
}) })
}) })

View file

@ -43,8 +43,11 @@ describe('The UserHighlight store', () => {
describe('set', () => { describe('set', () => {
it('should set preference and update journal log accordingly', () => { it('should set preference and update journal log accordingly', () => {
const store = useUserHighlightStore() const store = useUserHighlightStore()
store.set({ user: 'highlight@testing', value: { type: 'test' }}) store.set({ user: 'highlight@testing', value: { type: 'test' } })
expect(store.highlight['highlight@testing']).to.eql({ user: 'highlight@testing', type: 'test' }) expect(store.highlight['highlight@testing']).to.eql({
user: 'highlight@testing',
type: 'test',
})
expect(store.highlight._journal.length).to.eql(1) expect(store.highlight._journal.length).to.eql(1)
expect(store.highlight._journal[0]).to.eql({ expect(store.highlight._journal[0]).to.eql({
user: 'highlight@testing', user: 'highlight@testing',
@ -60,15 +63,20 @@ describe('The UserHighlight store', () => {
store.set({ user: 'highlight@testing.xyz', value: { type: 'test' } }) store.set({ user: 'highlight@testing.xyz', value: { type: 'test' } })
store.set({ user: 'highlight@testing.xyz', value: { type: 'test' } }) store.set({ user: 'highlight@testing.xyz', value: { type: 'test' } })
store.updateCache({ username: 'test' }) store.updateCache({ username: 'test' })
expect(store.highlight['highlight@testing.xyz']).to.eql({ user: 'highlight@testing.xyz', type: 'test' }) expect(store.highlight['highlight@testing.xyz']).to.eql({
user: 'highlight@testing.xyz',
type: 'test',
})
expect(store.highlight._journal.length).to.eql(1) expect(store.highlight._journal.length).to.eql(1)
expect(store.highlight._journal[0]).to.eql({ expect(store.highlight._journal[0]).to.eql({
user: 'highlight@testing.xyz', user: 'highlight@testing.xyz',
operation: 'set', operation: 'set',
args: [{ args: [
user: 'highlight@testing.xyz', {
type: 'test', user: 'highlight@testing.xyz',
}], type: 'test',
},
],
// should have A timestamp, we don't really care what it is // should have A timestamp, we don't really care what it is
timestamp: store.highlight._journal[0].timestamp, timestamp: store.highlight._journal[0].timestamp,
}) })
@ -79,7 +87,10 @@ describe('The UserHighlight store', () => {
store.set({ user: 'a@test.xyz', value: { type: 'foo' } }) store.set({ user: 'a@test.xyz', value: { type: 'foo' } })
store.set({ user: 'a@test.xyz', value: { type: 'foo' } }) store.set({ user: 'a@test.xyz', value: { type: 'foo' } })
store.updateCache({ username: 'test' }) store.updateCache({ username: 'test' })
expect(store.highlight['a@test.xyz']).to.eql({ user: 'a@test.xyz', type: 'foo' }) expect(store.highlight['a@test.xyz']).to.eql({
user: 'a@test.xyz',
type: 'foo',
})
expect(store.highlight._journal.length).to.eql(1) expect(store.highlight._journal.length).to.eql(1)
}) })
}) })
@ -156,7 +167,11 @@ describe('The UserHighlight store', () => {
_mergePrefs( _mergePrefs(
// RECENT // RECENT
{ {
highlight: { 'a@test.xyz': 1, 'b@test.xyz': 0, 'c@test.xyz': true }, highlight: {
'a@test.xyz': 1,
'b@test.xyz': 0,
'c@test.xyz': true,
},
_journal: [ _journal: [
{ {
user: 'b@test.xyz', user: 'b@test.xyz',
@ -174,7 +189,11 @@ describe('The UserHighlight store', () => {
}, },
// STALE // STALE
{ {
highlight: { 'a@test.xyz': 1, 'b@test.xyz': 1, 'c@test.xyz': false }, highlight: {
'a@test.xyz': 1,
'b@test.xyz': 1,
'c@test.xyz': false,
},
_journal: [ _journal: [
{ {
user: 'a@test.xyz', user: 'a@test.xyz',