From 74136e0effea39bc294f8c1c6f67f15869d64ed5 Mon Sep 17 00:00:00 2001 From: SNUPI Date: Wed, 3 Aug 2022 17:41:24 +0900 Subject: [PATCH 01/11] [ bug ] add manifest options --- public/images/undefined.png | Bin 0 -> 7159 bytes public/index.html | 4 +++- public/manifest.json | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 public/images/undefined.png create mode 100644 public/manifest.json diff --git a/public/images/undefined.png b/public/images/undefined.png new file mode 100644 index 0000000000000000000000000000000000000000..5a436cbd68fb8f09634e536d39c79f296a091d71 GIT binary patch literal 7159 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 + + + @@ -34,7 +37,6 @@ rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" /> - diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 00000000..27ccd8fc --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,18 @@ +{ + "background_color": "#ffffff", + "description": "지금 내게 필요한 대화주제 추천 서비스, Piickle", + "dir": "ltr", + "display": "standalone", + "name": "Piickle", + "orientation": "any", + "scope": "/", + "short_name": "Piickle", + "start_url": "https://www.piikcle.link", + "theme_color": "#ffffff", + "icons": [ + { + "src": "images/undefined.png", + "type": "image/x-icon" + } + ] +} From 3db78b7cc53f53e25d4eabb0b1e50f0d78a78a78 Mon Sep 17 00:00:00 2001 From: SNUPI Date: Wed, 3 Aug 2022 17:41:48 +0900 Subject: [PATCH 02/11] [ bug ] add pwabuilder service worker --- public/offline.html | 12 +++++++++++ public/pwabuilder-sw.js | 45 +++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 2 +- 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 public/offline.html create mode 100644 public/pwabuilder-sw.js diff --git a/public/offline.html b/public/offline.html new file mode 100644 index 00000000..657efb10 --- /dev/null +++ b/public/offline.html @@ -0,0 +1,12 @@ + + + + + + + No Internet Connection + + +

Please check your internet connection and try again.

+ + \ No newline at end of file diff --git a/public/pwabuilder-sw.js b/public/pwabuilder-sw.js new file mode 100644 index 00000000..69e29527 --- /dev/null +++ b/public/pwabuilder-sw.js @@ -0,0 +1,45 @@ +// This is the "Offline page" service worker + +importScripts("https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js"); + +const CACHE = "pwabuilder-page"; + +// TODO: replace the following with the correct offline fallback page i.e.: const offlineFallbackPage = "offline.html"; +const offlineFallbackPage = "offline.html"; + +self.addEventListener("message", (event) => { + if (event.data && event.data.type === "SKIP_WAITING") { + self.skipWaiting(); + } +}); + +self.addEventListener("install", async (event) => { + event.waitUntil(caches.open(CACHE).then((cache) => cache.add(offlineFallbackPage))); +}); + +if (workbox.navigationPreload.isSupported()) { + workbox.navigationPreload.enable(); +} + +self.addEventListener("fetch", (event) => { + if (event.request.mode === "navigate") { + event.respondWith( + (async () => { + try { + const preloadResp = await event.preloadResponse; + + if (preloadResp) { + return preloadResp; + } + + const networkResp = await fetch(event.request); + return networkResp; + } catch (error) { + const cache = await caches.open(CACHE); + const cachedResp = await cache.match(offlineFallbackPage); + return cachedResp; + } + })(), + ); + } +}); diff --git a/tsconfig.json b/tsconfig.json index 10997606..d269c947 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,7 +23,7 @@ }, "include": [ "**/*.ts", - "**/*.tsx", "public/mockServiceWorker.js", + "**/*.tsx", "public/mockServiceWorker.js", "public/pwabuilder-sw.js", ], "exclude": [ "node_modules" From 160696da84477ec27858377bec0ce58f3712cbe9 Mon Sep 17 00:00:00 2001 From: SNUPI Date: Wed, 3 Aug 2022 17:42:08 +0900 Subject: [PATCH 03/11] [ bug ] add serviceWorker with react-ts --- src/index.tsx | 4 ++ src/serviceWorker.ts | 114 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/serviceWorker.ts diff --git a/src/index.tsx b/src/index.tsx index 3459eee0..43a05d73 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -4,9 +4,13 @@ import { RecoilRoot } from "recoil"; import { ThemeProvider } from "styled-components"; import App from "./App"; +// import registerServiceWorker from "./serviceWorker"; import { GlobalStyle } from "./style/globalStyle"; import theme from "./style/theme"; +// service worker for PWA +// registerServiceWorker(); + const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); root.render( diff --git a/src/serviceWorker.ts b/src/serviceWorker.ts new file mode 100644 index 00000000..1ed50d84 --- /dev/null +++ b/src/serviceWorker.ts @@ -0,0 +1,114 @@ +// tslint:disable:no-console +// In production, we register a service worker to serve assets from local cache. + +// This lets the app load faster on subsequent visits in production, and gives +// it offline capabilities. However, it also means that developers (and users) +// will only see deployed updates on the 'N+1' visit to a page, since previously +// cached resources are updated in the background. + +// To learn more about the benefits of this model, read https://goo.gl/KwvDNy. +// This link also includes instructions on opting out of this behavior. + +const isLocalhost = Boolean( + window.location.hostname === "localhost" || + // [::1] is the IPv6 localhost address. + window.location.hostname === "[::1]" || + // 127.0.0.1/8 is considered localhost for IPv4. + window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/), +); + +export default function register() { + if ("serviceWorker" in navigator) { + // The URL constructor is available in all browsers that support SW. + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const publicUrl = new URL(process.env.PUBLIC_URL!, window.location.toString()); + if (publicUrl.origin !== window.location.origin) { + // Our service worker won't work if PUBLIC_URL is on a different origin + // from what our page is served on. This might happen if a CDN is used to + // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374 + return; + } + + window.addEventListener("load", () => { + const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; + + if (isLocalhost) { + // This is running on localhost. Lets check if a service worker still exists or not. + checkValidServiceWorker(swUrl); + + // Add some additional logging to localhost, pointing developers to the + // service worker/PWA documentation. + navigator.serviceWorker.ready.then(() => { + console.log( + "This web app is being served cache-first by a service " + + "worker. To learn more, visit https://goo.gl/SC7cgQ", + ); + }); + } else { + // Is not local host. Just register service worker + registerValidSW(swUrl); + } + }); + } +} + +function registerValidSW(swUrl: string) { + navigator.serviceWorker + .register(swUrl) + .then((registration) => { + registration.onupdatefound = () => { + const installingWorker = registration.installing; + if (installingWorker) { + installingWorker.onstatechange = () => { + if (installingWorker.state === "installed") { + if (navigator.serviceWorker.controller) { + // At this point, the old content will have been purged and + // the fresh content will have been added to the cache. + // It's the perfect time to display a 'New content is + // available; please refresh.' message in your web app. + console.log("New content is available; please refresh."); + } else { + // At this point, everything has been precached. + // It's the perfect time to display a + // 'Content is cached for offline use.' message. + console.log("Content is cached for offline use."); + } + } + }; + } + }; + }) + .catch((error) => { + console.error("Error during service worker registration:", error); + }); +} + +function checkValidServiceWorker(swUrl: string) { + // Check if the service worker can be found. If it can't reload the page. + fetch(swUrl) + .then((response) => { + // Ensure service worker exists, and that we really are getting a JS file. + if (response.status === 404 || response.headers.get("content-type")?.indexOf("javascript") === -1) { + // No service worker found. Probably a different app. Reload the page. + navigator.serviceWorker.ready.then((registration) => { + registration.unregister().then(() => { + window.location.reload(); + }); + }); + } else { + // Service worker found. Proceed as normal. + registerValidSW(swUrl); + } + }) + .catch(() => { + console.log("No internet connection found. App is running in offline mode."); + }); +} + +export function unregister() { + if ("serviceWorker" in navigator) { + navigator.serviceWorker.ready.then((registration) => { + registration.unregister(); + }); + } +} From 5797ce65f8d25e28e0114cf50bf224f6336c34f9 Mon Sep 17 00:00:00 2001 From: SNUPI Date: Wed, 3 Aug 2022 18:06:25 +0900 Subject: [PATCH 04/11] [ fix ] resolve manifest error --- public/index.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/index.html b/public/index.html index b2787631..f02f1b0f 100644 --- a/public/index.html +++ b/public/index.html @@ -37,9 +37,15 @@ rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" /> +
+ From 7ef2c74ae306dd68eda4764b7fb6695d8e237e5c Mon Sep 17 00:00:00 2001 From: SNUPI Date: Thu, 4 Aug 2022 18:31:00 +0900 Subject: [PATCH 05/11] =?UTF-8?q?[=20fix=20]=20service=20worker=20?= =?UTF-8?q?=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/index.html | 13 +++++++++++-- public/{pwabuilder-sw.js => pwaServiceWorker.js} | 0 tsconfig.json | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) rename public/{pwabuilder-sw.js => pwaServiceWorker.js} (100%) diff --git a/public/index.html b/public/index.html index f02f1b0f..440892e9 100644 --- a/public/index.html +++ b/public/index.html @@ -42,10 +42,19 @@
- + diff --git a/public/pwabuilder-sw.js b/public/pwaServiceWorker.js similarity index 100% rename from public/pwabuilder-sw.js rename to public/pwaServiceWorker.js diff --git a/tsconfig.json b/tsconfig.json index d269c947..1139b4a3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -23,7 +23,7 @@ }, "include": [ "**/*.ts", - "**/*.tsx", "public/mockServiceWorker.js", "public/pwabuilder-sw.js", + "**/*.tsx", "public/mockServiceWorker.js", "public/pwaServiceWorker.js", ], "exclude": [ "node_modules" From 5bb6eda174a687df70e5fa22ed4b01ebe0282e7f Mon Sep 17 00:00:00 2001 From: SNUPI Date: Fri, 5 Aug 2022 11:54:02 +0900 Subject: [PATCH 06/11] [ fix ] make up service worker for caching (offline page) --- public/pwaServiceWorker.js | 39 ++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/public/pwaServiceWorker.js b/public/pwaServiceWorker.js index 69e29527..7cbfe2f1 100644 --- a/public/pwaServiceWorker.js +++ b/public/pwaServiceWorker.js @@ -1,11 +1,10 @@ -// This is the "Offline page" service worker - +/* eslint-disable no-undef */ importScripts("https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js"); const CACHE = "pwabuilder-page"; -// TODO: replace the following with the correct offline fallback page i.e.: const offlineFallbackPage = "offline.html"; const offlineFallbackPage = "offline.html"; +const urlsToCache = ["index.html", offlineFallbackPage]; self.addEventListener("message", (event) => { if (event.data && event.data.type === "SKIP_WAITING") { @@ -13,28 +12,35 @@ self.addEventListener("message", (event) => { } }); +// SW 설치 self.addEventListener("install", async (event) => { - event.waitUntil(caches.open(CACHE).then((cache) => cache.add(offlineFallbackPage))); + event.waitUntil( + caches.open(CACHE).then((cache) => { + console.log("Opened Cache"); + return cache.addAll(urlsToCache); + }), + ); }); if (workbox.navigationPreload.isSupported()) { workbox.navigationPreload.enable(); } +// Listen for requests self.addEventListener("fetch", (event) => { if (event.request.mode === "navigate") { event.respondWith( (async () => { try { + // 만약 preload 된 response가 있으면 받는다 const preloadResp = await event.preloadResponse; + if (preloadResp) return preloadResp; - if (preloadResp) { - return preloadResp; - } - + // 만약 없으면 network를 이용한다 const networkResp = await fetch(event.request); return networkResp; } catch (error) { + // 인터넷 연결이 불안정할 경우, offline 페이지를 보여준다 const cache = await caches.open(CACHE); const cachedResp = await cache.match(offlineFallbackPage); return cachedResp; @@ -43,3 +49,20 @@ self.addEventListener("fetch", (event) => { ); } }); + +// SW 활성화 +// 업데이트 할 때마다 caching 을 확인하고 promise 를 동작함 +self.addEventListener("activate", (event) => { + const cacheWhiteList = []; + cacheWhiteList.push(CACHE); + + event.waitUntil( + caches.keys().then((cachesNames) => + Promise.all( + cachesNames.map((cacheName) => { + if (!cacheWhiteList.includes(cacheName)) return caches.delete(cacheName); + }), + ), + ), + ); +}); From cbf5a3da6863c1aa20e94cfbb63d1a35ac64b083 Mon Sep 17 00:00:00 2001 From: SNUPI Date: Fri, 5 Aug 2022 12:44:03 +0900 Subject: [PATCH 07/11] [ feat ] make up offline page --- public/offline.html | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/public/offline.html b/public/offline.html index 657efb10..b7f29fa2 100644 --- a/public/offline.html +++ b/public/offline.html @@ -5,8 +5,30 @@ No Internet Connection + -

Please check your internet connection and try again.

+
+

인터넷 연결에 실패하였습니다

+

인터넷 연결을 확인하고 다시 시도해주십시오

+
\ No newline at end of file From c7f36fb296cedbacfe5bf65c11b467a7cd8b14ac Mon Sep 17 00:00:00 2001 From: SNUPI Date: Fri, 5 Aug 2022 13:19:02 +0900 Subject: [PATCH 08/11] [ feat ] add images for pwa --- public/images/banner.jpg | Bin 0 -> 63788 bytes public/images/logo.png | Bin 0 -> 18909 bytes public/images/undefined.png | Bin 7159 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/banner.jpg create mode 100644 public/images/logo.png delete mode 100644 public/images/undefined.png diff --git a/public/images/banner.jpg b/public/images/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f208b0fff1083f2a3afafd120b8e1ef250d4d54c GIT binary patch literal 63788 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

b3D3u(_ST<)+$XRM17$FPFs?=Y>!+oG~nV*knT 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 N{QS0I!nFTd{x2Fdjs5@t literal 0 HcmV?d00001 diff --git a/public/images/logo.png b/public/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d77176e648beb84c8368122dab510bc11253f292 GIT binary patch literal 18909 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 literal 0 HcmV?d00001 diff --git a/public/images/undefined.png b/public/images/undefined.png deleted file mode 100644 index 5a436cbd68fb8f09634e536d39c79f296a091d71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7159 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 Date: Fri, 5 Aug 2022 13:29:57 +0900 Subject: [PATCH 09/11] [ fix ] make up manifest for pwa --- public/favicon.ico | Bin 5870 -> 0 bytes public/index.html | 13 ++++++------- public/manifest.json | 25 ++++++++++++++++++------- 3 files changed, 24 insertions(+), 14 deletions(-) delete mode 100644 public/favicon.ico diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index c2ec8bcd73670f3ac5da9635b19333cb6856f5c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5870 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 yi@|KgMI}%$2^(oqdl3l<2}wJYlr>692v{Km?C - - - - - - + + + + + + @@ -32,7 +32,6 @@ - Date: Fri, 5 Aug 2022 13:40:58 +0900 Subject: [PATCH 10/11] =?UTF-8?q?[=20etc=20]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/index.html | 5 -- src/index.tsx | 4 -- src/serviceWorker.ts | 114 ------------------------------------------- 3 files changed, 123 deletions(-) delete mode 100644 src/serviceWorker.ts diff --git a/public/index.html b/public/index.html index 35a8d7cf..80d656d5 100644 --- a/public/index.html +++ b/public/index.html @@ -50,10 +50,5 @@ }) } - diff --git a/src/index.tsx b/src/index.tsx index 43a05d73..3459eee0 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -4,13 +4,9 @@ import { RecoilRoot } from "recoil"; import { ThemeProvider } from "styled-components"; import App from "./App"; -// import registerServiceWorker from "./serviceWorker"; import { GlobalStyle } from "./style/globalStyle"; import theme from "./style/theme"; -// service worker for PWA -// registerServiceWorker(); - const root = ReactDOM.createRoot(document.getElementById("root") as HTMLElement); root.render( diff --git a/src/serviceWorker.ts b/src/serviceWorker.ts deleted file mode 100644 index 1ed50d84..00000000 --- a/src/serviceWorker.ts +++ /dev/null @@ -1,114 +0,0 @@ -// tslint:disable:no-console -// In production, we register a service worker to serve assets from local cache. - -// This lets the app load faster on subsequent visits in production, and gives -// it offline capabilities. However, it also means that developers (and users) -// will only see deployed updates on the 'N+1' visit to a page, since previously -// cached resources are updated in the background. - -// To learn more about the benefits of this model, read https://goo.gl/KwvDNy. -// This link also includes instructions on opting out of this behavior. - -const isLocalhost = Boolean( - window.location.hostname === "localhost" || - // [::1] is the IPv6 localhost address. - window.location.hostname === "[::1]" || - // 127.0.0.1/8 is considered localhost for IPv4. - window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/), -); - -export default function register() { - if ("serviceWorker" in navigator) { - // The URL constructor is available in all browsers that support SW. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const publicUrl = new URL(process.env.PUBLIC_URL!, window.location.toString()); - if (publicUrl.origin !== window.location.origin) { - // Our service worker won't work if PUBLIC_URL is on a different origin - // from what our page is served on. This might happen if a CDN is used to - // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374 - return; - } - - window.addEventListener("load", () => { - const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`; - - if (isLocalhost) { - // This is running on localhost. Lets check if a service worker still exists or not. - checkValidServiceWorker(swUrl); - - // Add some additional logging to localhost, pointing developers to the - // service worker/PWA documentation. - navigator.serviceWorker.ready.then(() => { - console.log( - "This web app is being served cache-first by a service " + - "worker. To learn more, visit https://goo.gl/SC7cgQ", - ); - }); - } else { - // Is not local host. Just register service worker - registerValidSW(swUrl); - } - }); - } -} - -function registerValidSW(swUrl: string) { - navigator.serviceWorker - .register(swUrl) - .then((registration) => { - registration.onupdatefound = () => { - const installingWorker = registration.installing; - if (installingWorker) { - installingWorker.onstatechange = () => { - if (installingWorker.state === "installed") { - if (navigator.serviceWorker.controller) { - // At this point, the old content will have been purged and - // the fresh content will have been added to the cache. - // It's the perfect time to display a 'New content is - // available; please refresh.' message in your web app. - console.log("New content is available; please refresh."); - } else { - // At this point, everything has been precached. - // It's the perfect time to display a - // 'Content is cached for offline use.' message. - console.log("Content is cached for offline use."); - } - } - }; - } - }; - }) - .catch((error) => { - console.error("Error during service worker registration:", error); - }); -} - -function checkValidServiceWorker(swUrl: string) { - // Check if the service worker can be found. If it can't reload the page. - fetch(swUrl) - .then((response) => { - // Ensure service worker exists, and that we really are getting a JS file. - if (response.status === 404 || response.headers.get("content-type")?.indexOf("javascript") === -1) { - // No service worker found. Probably a different app. Reload the page. - navigator.serviceWorker.ready.then((registration) => { - registration.unregister().then(() => { - window.location.reload(); - }); - }); - } else { - // Service worker found. Proceed as normal. - registerValidSW(swUrl); - } - }) - .catch(() => { - console.log("No internet connection found. App is running in offline mode."); - }); -} - -export function unregister() { - if ("serviceWorker" in navigator) { - navigator.serviceWorker.ready.then((registration) => { - registration.unregister(); - }); - } -} From 26ae24dbaba7122526827c49cb3597a31f7b18a7 Mon Sep 17 00:00:00 2001 From: SNUPI Date: Fri, 5 Aug 2022 14:35:53 +0900 Subject: [PATCH 11/11] [ fix ] add maskable icon on manifest --- public/manifest.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/manifest.json b/public/manifest.json index 3aff99c3..c7183be8 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -13,7 +13,8 @@ { "src": "images/logo.png", "type": "image/x-icon", - "sizes": "512x512" + "sizes": "512x512", + "purpose": "any maskable" }, { "src": "images/logo.png", @@ -23,7 +24,8 @@ { "src": "images/banner.jpg", "type": "image/jpg", - "sizes": "480x288" + "sizes": "480x288", + "purpose": "any maskable" } ] }