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(
this.$store,
useSyncConfigStore().mergedConfig.notificationVisibility,
useSyncConfigStore().mergedConfig.ignoreInactionableSeen,
)
},
unseenNotificationsCount() {
return (
this.unseenNotifications.length + countExtraNotifications(this.$store)
this.unseenNotifications.length +
countExtraNotifications(this.$store, useSyncConfigStore().mergedConfig)
)
},
unseenCount() {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -43,8 +43,11 @@ describe('The UserHighlight store', () => {
describe('set', () => {
it('should set preference and update journal log accordingly', () => {
const store = useUserHighlightStore()
store.set({ user: 'highlight@testing', value: { type: 'test' }})
expect(store.highlight['highlight@testing']).to.eql({ user: 'highlight@testing', 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._journal.length).to.eql(1)
expect(store.highlight._journal[0]).to.eql({
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.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[0]).to.eql({
user: 'highlight@testing.xyz',
operation: 'set',
args: [{
user: 'highlight@testing.xyz',
type: 'test',
}],
args: [
{
user: 'highlight@testing.xyz',
type: 'test',
},
],
// should have A timestamp, we don't really care what it is
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.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)
})
})
@ -156,7 +167,11 @@ describe('The UserHighlight store', () => {
_mergePrefs(
// 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: [
{
user: 'b@test.xyz',
@ -174,7 +189,11 @@ describe('The UserHighlight store', () => {
},
// 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: [
{
user: 'a@test.xyz',