Compare commits
1 Commits
v4.2.0
...
update-sw-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c38151c237 |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "cinny",
|
"name": "cinny",
|
||||||
"version": "4.2.0",
|
"version": "4.1.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "cinny",
|
"name": "cinny",
|
||||||
"version": "4.2.0",
|
"version": "4.1.0",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@atlaskit/pragmatic-drag-and-drop": "1.1.6",
|
"@atlaskit/pragmatic-drag-and-drop": "1.1.6",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cinny",
|
"name": "cinny",
|
||||||
"version": "4.2.0",
|
"version": "4.1.0",
|
||||||
"description": "Yet another matrix client",
|
"description": "Yet another matrix client",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export function AuthFooter() {
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer"
|
rel="noreferrer"
|
||||||
>
|
>
|
||||||
v4.2.0
|
v4.1.0
|
||||||
</Text>
|
</Text>
|
||||||
<Text as="a" size="T300" href="https://twitter.com/cinnyapp" target="_blank" rel="noreferrer">
|
<Text as="a" size="T300" href="https://twitter.com/cinnyapp" target="_blank" rel="noreferrer">
|
||||||
Twitter
|
Twitter
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export function WelcomePage() {
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noreferrer noopener"
|
rel="noreferrer noopener"
|
||||||
>
|
>
|
||||||
v4.2.0
|
v4.1.0
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
const cons = {
|
const cons = {
|
||||||
version: '4.2.0',
|
version: '4.1.0',
|
||||||
secretKey: {
|
secretKey: {
|
||||||
ACCESS_TOKEN: 'cinny_access_token',
|
ACCESS_TOKEN: 'cinny_access_token',
|
||||||
DEVICE_ID: 'cinny_device_id',
|
DEVICE_ID: 'cinny_device_id',
|
||||||
|
|||||||
@@ -21,25 +21,30 @@ import './app/i18n';
|
|||||||
document.body.classList.add(configClass, varsClass);
|
document.body.classList.add(configClass, varsClass);
|
||||||
settings.applyTheme();
|
settings.applyTheme();
|
||||||
|
|
||||||
// Register Service Worker
|
const registerServiceWorker = async () => {
|
||||||
if ('serviceWorker' in navigator) {
|
if ('serviceWorker' in navigator) {
|
||||||
const swUrl =
|
const swUrl =
|
||||||
import.meta.env.MODE === 'production'
|
import.meta.env.MODE === 'production'
|
||||||
? `${trimTrailingSlash(import.meta.env.BASE_URL)}/sw.js`
|
? `${trimTrailingSlash(import.meta.env.BASE_URL)}/sw.js`
|
||||||
: `/dev-sw.js?dev-sw`;
|
: `/dev-sw.js?dev-sw`;
|
||||||
|
|
||||||
navigator.serviceWorker.register(swUrl);
|
await navigator.serviceWorker.register(swUrl);
|
||||||
navigator.serviceWorker.addEventListener('message', (event) => {
|
|
||||||
if (event.data?.type === 'token' && event.data?.responseKey) {
|
navigator.serviceWorker.ready.then((registration) => {
|
||||||
// Get the token for SW.
|
navigator.serviceWorker.addEventListener('message', (event) => {
|
||||||
const token = localStorage.getItem('cinny_access_token') ?? undefined;
|
if (event.data?.type === 'token' && event.data?.messageId) {
|
||||||
event.source!.postMessage({
|
const token = localStorage.getItem('cinny_access_token') ?? undefined;
|
||||||
responseKey: event.data.responseKey,
|
registration.active?.postMessage({
|
||||||
token,
|
messageId: event.data.messageId,
|
||||||
|
token,
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
});
|
||||||
});
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
|
window.addEventListener('load', registerServiceWorker);
|
||||||
|
|
||||||
const mountApp = () => {
|
const mountApp = () => {
|
||||||
const rootContainer = document.getElementById('root');
|
const rootContainer = document.getElementById('root');
|
||||||
|
|||||||
26
src/sw.ts
26
src/sw.ts
@@ -3,16 +3,26 @@
|
|||||||
export type {};
|
export type {};
|
||||||
declare const self: ServiceWorkerGlobalScope;
|
declare const self: ServiceWorkerGlobalScope;
|
||||||
|
|
||||||
|
type Message = { messageId: string };
|
||||||
|
type MessageListener = (message: Message) => void;
|
||||||
|
const messageListeners = new Map<string, MessageListener>();
|
||||||
|
|
||||||
|
self.addEventListener('message', (event) => {
|
||||||
|
const { messageId } = event.data;
|
||||||
|
if (typeof messageId === 'string') {
|
||||||
|
messageListeners.get(messageId)?.(event.data);
|
||||||
|
messageListeners.delete(messageId);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
type TokenMessage = Message & {
|
||||||
|
token?: string;
|
||||||
|
};
|
||||||
async function askForAccessToken(client: Client): Promise<string | undefined> {
|
async function askForAccessToken(client: Client): Promise<string | undefined> {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
const responseKey = Math.random().toString(36);
|
const messageId = Math.random().toString(36);
|
||||||
const listener = (event: ExtendableMessageEvent) => {
|
messageListeners.set(messageId, (message: TokenMessage) => resolve(message.token));
|
||||||
if (event.data.responseKey !== responseKey) return;
|
client.postMessage({ messageId, type: 'token' });
|
||||||
resolve(event.data.token);
|
|
||||||
self.removeEventListener('message', listener);
|
|
||||||
};
|
|
||||||
self.addEventListener('message', listener);
|
|
||||||
client.postMessage({ responseKey, type: 'token' });
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user