mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-03 23:14:13 +00:00 
			
		
		
		
	Fix service worker generation
This commit is contained in:
		
							parent
							
								
									4576641105
								
							
						
					
					
						commit
						ec4d5857d8
					
				
					 5 changed files with 95 additions and 98 deletions
				
			
		| 
						 | 
				
			
			@ -1,95 +0,0 @@
 | 
			
		|||
import getNoteSummary from '../../misc/get-note-summary';
 | 
			
		||||
import getUserName from '../../misc/get-user-name';
 | 
			
		||||
import { clientDb, get, bulkGet } from '../db';
 | 
			
		||||
 | 
			
		||||
const getTranslation = (text: string): Promise<string> => get(text, clientDb.i18n);
 | 
			
		||||
 | 
			
		||||
export default async function(type, data): Promise<[string, NotificationOptions]> {
 | 
			
		||||
	const contexts = ['deletedNote', 'invisibleNote', 'withNFiles', 'poll'];
 | 
			
		||||
	const locale = Object.fromEntries(await bulkGet(contexts, clientDb.i18n) as [string, string][]);
 | 
			
		||||
 | 
			
		||||
	switch (type) {
 | 
			
		||||
		case 'driveFileCreated': // TODO (Server Side)
 | 
			
		||||
			return [await getTranslation('_notification.fileUploaded'), {
 | 
			
		||||
				body: data.name,
 | 
			
		||||
				icon: data.url
 | 
			
		||||
			}];
 | 
			
		||||
		case 'notification':
 | 
			
		||||
			switch (data.type) {
 | 
			
		||||
				case 'mention':
 | 
			
		||||
					return [(await getTranslation('_notification.youGotMention')).replace('{name}', getUserName(data.user)), {
 | 
			
		||||
						body: getNoteSummary(data.note, locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'reply':
 | 
			
		||||
					return [(await getTranslation('_notification.youGotReply')).replace('{name}', getUserName(data.user)), {
 | 
			
		||||
						body: getNoteSummary(data.note, locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'renote':
 | 
			
		||||
					return [(await getTranslation('_notification.youRenoted')).replace('{name}', getUserName(data.user)), {
 | 
			
		||||
						body: getNoteSummary(data.note, locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'quote':
 | 
			
		||||
					return [(await getTranslation('_notification.youGotQuote')).replace('{name}', getUserName(data.user)), {
 | 
			
		||||
						body: getNoteSummary(data.note, locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'reaction':
 | 
			
		||||
					return [`${data.reaction} ${getUserName(data.user)}`, {
 | 
			
		||||
						body: getNoteSummary(data.note, locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'pollVote':
 | 
			
		||||
					return [(await getTranslation('_notification.youGotPoll')).replace('{name}', getUserName(data.user)), {
 | 
			
		||||
						body: getNoteSummary(data.note, locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'follow':
 | 
			
		||||
					return [await getTranslation('_notification.youWereFollowed'), {
 | 
			
		||||
						body: getUserName(data.user),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'receiveFollowRequest':
 | 
			
		||||
					return [await getTranslation('_notification.youReceivedFollowRequest'), {
 | 
			
		||||
						body: getUserName(data.user),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'followRequestAccepted':
 | 
			
		||||
					return [await getTranslation('_notification.yourFollowRequestAccepted'), {
 | 
			
		||||
						body: getUserName(data.user),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'groupInvited':
 | 
			
		||||
					return [await getTranslation('_notification.youWereInvitedToGroup'), {
 | 
			
		||||
						body: data.group.name
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				default:
 | 
			
		||||
					return null;
 | 
			
		||||
			}
 | 
			
		||||
		case 'unreadMessagingMessage':
 | 
			
		||||
			if (data.groupId === null) {
 | 
			
		||||
				return [(await getTranslation('_notification.youGotMessagingMessageFromUser')).replace('{name}', getUserName(data.user)), {
 | 
			
		||||
					icon: data.user.avatarUrl,
 | 
			
		||||
					tag: `messaging:user:${data.user.id}`
 | 
			
		||||
				}];
 | 
			
		||||
			}
 | 
			
		||||
			return [(await getTranslation('_notification.youGotMessagingMessageFromGroup')).replace('{name}', data.group.name), {
 | 
			
		||||
				icon: data.user.avatarUrl,
 | 
			
		||||
				tag: `messaging:group:${data.group.id}`
 | 
			
		||||
			}];
 | 
			
		||||
		default:
 | 
			
		||||
			return null;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										90
									
								
								src/client/sw/compose-notification.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								src/client/sw/compose-notification.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,90 @@
 | 
			
		|||
import getNoteSummary from '../../misc/get-note-summary';
 | 
			
		||||
import getUserName from '../../misc/get-user-name';
 | 
			
		||||
import { i18n } from '@/sw/i18n';
 | 
			
		||||
 | 
			
		||||
export default async function(type, data): Promise<[string, NotificationOptions]> {
 | 
			
		||||
	switch (type) {
 | 
			
		||||
		case 'driveFileCreated': // TODO (Server Side)
 | 
			
		||||
			return [i18n.t('_notification.fileUploaded'), {
 | 
			
		||||
				body: data.name,
 | 
			
		||||
				icon: data.url
 | 
			
		||||
			}];
 | 
			
		||||
		case 'notification':
 | 
			
		||||
			switch (data.type) {
 | 
			
		||||
				case 'mention':
 | 
			
		||||
					return [i18n.t('_notification.youGotMention', { name: getUserName(data.user) }), {
 | 
			
		||||
						body: getNoteSummary(data.note, i18n.locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'reply':
 | 
			
		||||
					return [i18n.t('_notification.youGotReply', { name: getUserName(data.user) }), {
 | 
			
		||||
						body: getNoteSummary(data.note, i18n.locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'renote':
 | 
			
		||||
					return [i18n.t('_notification.youRenoted', { name: getUserName(data.user) }), {
 | 
			
		||||
						body: getNoteSummary(data.note, i18n.locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'quote':
 | 
			
		||||
					return [i18n.t('_notification.youGotQuote', { name: getUserName(data.user) }), {
 | 
			
		||||
						body: getNoteSummary(data.note, i18n.locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'reaction':
 | 
			
		||||
					return [`${data.reaction} ${getUserName(data.user)}`, {
 | 
			
		||||
						body: getNoteSummary(data.note, i18n.locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'pollVote':
 | 
			
		||||
					return [i18n.t('_notification.youGotPoll', { name: getUserName(data.user) }), {
 | 
			
		||||
						body: getNoteSummary(data.note, i18n.locale),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'follow':
 | 
			
		||||
					return [i18n.t('_notification.youWereFollowed'), {
 | 
			
		||||
						body: getUserName(data.user),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'receiveFollowRequest':
 | 
			
		||||
					return [i18n.t('_notification.youReceivedFollowRequest'), {
 | 
			
		||||
						body: getUserName(data.user),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'followRequestAccepted':
 | 
			
		||||
					return [i18n.t('_notification.yourFollowRequestAccepted'), {
 | 
			
		||||
						body: getUserName(data.user),
 | 
			
		||||
						icon: data.user.avatarUrl
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				case 'groupInvited':
 | 
			
		||||
					return [i18n.t('_notification.youWereInvitedToGroup'), {
 | 
			
		||||
						body: data.group.name
 | 
			
		||||
					}];
 | 
			
		||||
 | 
			
		||||
				default:
 | 
			
		||||
					return null;
 | 
			
		||||
			}
 | 
			
		||||
		case 'unreadMessagingMessage':
 | 
			
		||||
			if (data.groupId === null) {
 | 
			
		||||
				return [i18n.t('_notification.youGotMessagingMessageFromUser', { name: getUserName(data.user) }), {
 | 
			
		||||
					icon: data.user.avatarUrl,
 | 
			
		||||
					tag: `messaging:user:${data.user.id}`
 | 
			
		||||
				}];
 | 
			
		||||
			}
 | 
			
		||||
			return [i18n.t('_notification.youGotMessagingMessageFromGroup', { name: data.group.name }), {
 | 
			
		||||
				icon: data.user.avatarUrl,
 | 
			
		||||
				tag: `messaging:group:${data.group.id}`
 | 
			
		||||
			}];
 | 
			
		||||
		default:
 | 
			
		||||
			return null;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								src/client/sw/i18n.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/client/sw/i18n.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
import { I18n } from '@/i18n';
 | 
			
		||||
 | 
			
		||||
export const i18n = new I18n(_LOCALE_);
 | 
			
		||||
| 
						 | 
				
			
			@ -3,9 +3,8 @@
 | 
			
		|||
 */
 | 
			
		||||
declare var self: ServiceWorkerGlobalScope;
 | 
			
		||||
 | 
			
		||||
import composeNotification from '@/scripts/compose-notification';
 | 
			
		||||
import composeNotification from '@/sw/compose-notification';
 | 
			
		||||
 | 
			
		||||
// eslint-disable-next-line no-undef
 | 
			
		||||
const version = _VERSION_;
 | 
			
		||||
const cacheName = `mk-cache-${version}`;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -38,7 +38,7 @@ module.exports = Object.keys(isProduction ? locales : {
 | 
			
		|||
}).map(lang => ({
 | 
			
		||||
	entry: {
 | 
			
		||||
		app: './src/client/init.ts',
 | 
			
		||||
		sw: './src/client/sw.ts'
 | 
			
		||||
		sw: './src/client/sw/sw.ts'
 | 
			
		||||
	},
 | 
			
		||||
	module: {
 | 
			
		||||
		rules: [{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue