mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	fix: プッシュ通知の変更が1時間ほど反映されない問題を修正 (#13407)
* fix: プッシュ通知の変更が1時間ほど反映されない問題を修正 * 410 to refresh * refreshCache
This commit is contained in:
		
							parent
							
								
									a85fccaeea
								
							
						
					
					
						commit
						b8d8b359bc
					
				
					 4 changed files with 23 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -115,12 +115,19 @@ export class PushNotificationService implements OnApplicationShutdown {
 | 
			
		|||
						endpoint: subscription.endpoint,
 | 
			
		||||
						auth: subscription.auth,
 | 
			
		||||
						publickey: subscription.publickey,
 | 
			
		||||
					}).then(() => {
 | 
			
		||||
						this.refreshCache(userId);
 | 
			
		||||
					});
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@bindThis
 | 
			
		||||
	public refreshCache(userId: string): void {
 | 
			
		||||
		this.subscriptionsCache.refresh(userId);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@bindThis
 | 
			
		||||
	public dispose(): void {
 | 
			
		||||
		this.subscriptionsCache.dispose();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,7 @@ import type { SwSubscriptionsRepository } from '@/models/_.js';
 | 
			
		|||
import { Endpoint } from '@/server/api/endpoint-base.js';
 | 
			
		||||
import { MetaService } from '@/core/MetaService.js';
 | 
			
		||||
import { DI } from '@/di-symbols.js';
 | 
			
		||||
import { PushNotificationService } from '@/core/PushNotificationService.js';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	tags: ['account'],
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +67,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
			
		|||
 | 
			
		||||
		private idService: IdService,
 | 
			
		||||
		private metaService: MetaService,
 | 
			
		||||
		private pushNotificationService: PushNotificationService,
 | 
			
		||||
	) {
 | 
			
		||||
		super(meta, paramDef, async (ps, me) => {
 | 
			
		||||
			// if already subscribed
 | 
			
		||||
| 
						 | 
				
			
			@ -97,6 +99,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
			
		|||
				sendReadMessage: ps.sendReadMessage,
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			this.pushNotificationService.refreshCache(me.id);
 | 
			
		||||
 | 
			
		||||
			return {
 | 
			
		||||
				state: 'subscribed' as const,
 | 
			
		||||
				key: instance.swPublicKey,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@ import { Inject, Injectable } from '@nestjs/common';
 | 
			
		|||
import type { SwSubscriptionsRepository } from '@/models/_.js';
 | 
			
		||||
import { Endpoint } from '@/server/api/endpoint-base.js';
 | 
			
		||||
import { DI } from '@/di-symbols.js';
 | 
			
		||||
import { PushNotificationService } from '@/core/PushNotificationService.js';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	tags: ['account'],
 | 
			
		||||
| 
						 | 
				
			
			@ -29,12 +30,18 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
			
		|||
	constructor(
 | 
			
		||||
		@Inject(DI.swSubscriptionsRepository)
 | 
			
		||||
		private swSubscriptionsRepository: SwSubscriptionsRepository,
 | 
			
		||||
 | 
			
		||||
		private pushNotificationService: PushNotificationService,
 | 
			
		||||
	) {
 | 
			
		||||
		super(meta, paramDef, async (ps, me) => {
 | 
			
		||||
			await this.swSubscriptionsRepository.delete({
 | 
			
		||||
				...(me ? { userId: me.id } : {}),
 | 
			
		||||
				endpoint: ps.endpoint,
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			if (me) {
 | 
			
		||||
				this.pushNotificationService.refreshCache(me.id);
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,6 +7,7 @@ import { Inject, Injectable } from '@nestjs/common';
 | 
			
		|||
import type { SwSubscriptionsRepository } from '@/models/_.js';
 | 
			
		||||
import { Endpoint } from '@/server/api/endpoint-base.js';
 | 
			
		||||
import { DI } from '@/di-symbols.js';
 | 
			
		||||
import { PushNotificationService } from '@/core/PushNotificationService.js';
 | 
			
		||||
import { ApiError } from '../../error.js';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
| 
						 | 
				
			
			@ -58,6 +59,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
			
		|||
	constructor(
 | 
			
		||||
		@Inject(DI.swSubscriptionsRepository)
 | 
			
		||||
		private swSubscriptionsRepository: SwSubscriptionsRepository,
 | 
			
		||||
 | 
			
		||||
		private pushNotificationService: PushNotificationService,
 | 
			
		||||
	) {
 | 
			
		||||
		super(meta, paramDef, async (ps, me) => {
 | 
			
		||||
			const swSubscription = await this.swSubscriptionsRepository.findOneBy({
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +80,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 | 
			
		|||
				sendReadMessage: swSubscription.sendReadMessage,
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			this.pushNotificationService.refreshCache(me.id);
 | 
			
		||||
 | 
			
		||||
			return {
 | 
			
		||||
				userId: swSubscription.userId,
 | 
			
		||||
				endpoint: swSubscription.endpoint,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue