Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add the sw_webpush.js along with its git history #163

Merged
merged 42 commits into from
Jan 11, 2024
Merged
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
cd22a51
Add 'core/lc/' from commit 'afc2c461cc12d3a3e2c06ac69bcaac212a35a247'
judepereira May 23, 2020
7626031
Merge commit '705cc8ffc87cc033e60ee119bdf3b5a44301c4ae' into feature/…
judepereira May 23, 2020
65dbc32
BP-180 : Check if event is discarded while ingestion for web, if yes,…
May 26, 2020
406cc0d
Revert "BP-180 : Check if event is discarded while ingestion for web,…
May 27, 2020
cfd794e
oul remaining js files
Jun 1, 2020
a517828
reverse merge from develop
Jun 8, 2020
abae2cb
added encode param in a.js
Jun 29, 2020
e4284cd
added encode param in getEmail and resub as well
Jun 29, 2020
dd85e15
reverse merge from develop
Jul 7, 2020
c972379
reverese merge from develop
Jul 8, 2020
9c9c098
bug fixes and a.js
Jul 24, 2020
1e96ea2
PR fixes
Aug 6, 2020
24e7d1f
Fix npm lint error
Aug 10, 2020
cc9883e
a.js changes for enhancements
Aug 18, 2020
cf9edd6
parameterized fetching groups on landing pagE
Aug 20, 2020
0a82e56
fixes
Aug 20, 2020
2da6abb
Initial commit to support regions for Shopify
navinnagpal Sep 23, 2020
030e04e
Using stackName instead of region
navinnagpal Sep 23, 2020
dfe09c3
Empty string check when setting region
navinnagpal Sep 24, 2020
1c5b17a
Unwanted comma removed
navinnagpal Sep 24, 2020
3858e11
Undefined check for region
navinnagpal Sep 24, 2020
933690a
updated favicon and lc logo for a.js
royson-ct Apr 5, 2021
35381c5
master merge
AvneeshSharma1 Apr 7, 2021
1e4adf3
conflicts
AvneeshSharma1 Apr 7, 2021
86241b4
Merge pull request #135 from CleverTap/develop
KambleSonam May 23, 2023
523bda9
Merge pull request #142 from CleverTap/develop
KambleSonam Jun 13, 2023
b41f9e2
Merge pull request #147 from CleverTap/develop
KambleSonam Jun 21, 2023
f116c45
Merge pull request #152 from CleverTap/develop
KambleSonam Jul 8, 2023
c50ea94
Merge pull request #157 from CleverTap/develop
KambleSonam Jul 27, 2023
811b37b
Merge pull request #161 from CleverTap/develop
KambleSonam Aug 24, 2023
645edf9
add the sw_webpush.js along with its git history
shubhambjadhavar Aug 28, 2023
5d5a408
exclude all other from the directory of source repository
shubhambjadhavar Aug 28, 2023
9e45f9f
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Aug 31, 2023
ce6b8ae
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Aug 31, 2023
b715d7a
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Aug 31, 2023
9870164
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Aug 31, 2023
3186ae5
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Aug 31, 2023
8f33ba7
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Sep 1, 2023
b936d07
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Sep 1, 2023
c3bc36b
add pipeline to minify sw_webpush.js and upload it to s3 path
shubhambjadhavar Sep 1, 2023
20923ca
Merge branch 'develop' into task-SNE-40229
KambleSonam Jan 11, 2024
a32e4ef
updated min.js file
KambleSonam Jan 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/sw_build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Build SW Webpush
on:
push:
branches:
- master
- develop
pull_request:
branches:
- master
- develop
types: [opened, synchronize, reopened]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Use node.js version 10.x
uses: actions/setup-node@v2.1.2
with:
node-version: '10.x'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install packages
run: yarn
- name: Build package
run: yarn run build_sw
36 changes: 36 additions & 0 deletions .github/workflows/sw_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Release sw_webpush.min.js to s3
on:
release:
types: [published]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Use node.js version 10.x
uses: actions/setup-node@v2.1.2
with:
node-version: '10.x'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install packages
run: yarn
- name: Build package
run: yarn run build_sw
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Copy file to S3
run: |
aws s3 cp sw_webpush.min.js s3://${{ secrets.S3_BUCKET_PATH }}
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"main": "clevertap.js",
"scripts": {
"build": "rollup --config rollup.config.js",
"build_sw": "rollup --config sw_rollup.config.js",
"test": "eslint --fix test && jest",
"test:coverage": "rm -rf coverage && jest --coverage"
},
Expand Down
35 changes: 35 additions & 0 deletions sw_rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import resolve from '@rollup/plugin-node-resolve'
import babel from '@rollup/plugin-babel'
import replace from '@rollup/plugin-replace'
import { eslint } from 'rollup-plugin-eslint'
import { terser } from 'rollup-plugin-terser'
import { version } from './package.json'
import sourcemaps from 'rollup-plugin-sourcemaps'

export default {
input: 'sw_webpush.js',
output: [
{
name: 'sw_webpush',
file: 'sw_webpush.min.js',
format: 'umd',
plugins: [terser()]
}
],
plugins: [
resolve(),
sourcemaps(),
eslint({
fix: true,
throwOnError: true
}),
replace({
preventAssignment: true,
delimiters: ['', ''],
$$PACKAGE_VERSION$$: version
}),
babel({
babelHelpers: 'bundled'
})
]
}
162 changes: 162 additions & 0 deletions sw_webpush.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
/* eslint-disable handle-callback-err */
/* eslint-disable no-use-before-define */
/* eslint-disable no-undef */
/**
* Author: Jashan Shewakramani
* Last updated: 27 June 2016
* Description: Service worker for handling chrome push notifications
*
* NOTES:
* -> "self" refers to the global ServiceWorker Object
* -> This script is registered to the browser from a.js
* -> We're only handling notification clicks; "delivered" is handled by NB
* -> Use Google's closure compiler on http://closure-compiler.appspot.com/ for minifying
*/

importScripts('https://d2r1yp2w7bby2u.cloudfront.net/js/localforage.min.js')
// var CACHE_VERSION = 3;
// var CURRENT_CACHES = {
// prefetch: 'prefetch-cache-v' + CACHE_VERSION
// };

if (typeof globalRedirectPath === 'undefined') {
// set up some variables we need gobally
var globalNotificationData
// global redirect path for backward compatibility
var globalRedirectPath // when showing thr url; we need to log to LC before opening up the deep link
}

self.addEventListener('install', function (event) {
// force this service worker to become the active service worker; removes any previous implementations or migrations
self.skipWaiting()
// console.log('Service worker installed', self, event);
})

self.addEventListener('activate', function (event) {
// console.log('Service worker activated', self, event);
// Delete all caches that aren't named in CURRENT_CACHES.
// var expectedCacheNames = Object.keys(CURRENT_CACHES).map(function(key) {
// return CURRENT_CACHES[key];
// });
//
// event.waitUntil(
// caches.keys()
// .then(function(cacheNames) {
// return Promise.all(
// cacheNames.map(function(cacheName) {
// if (expectedCacheNames.indexOf(cacheName) === -1) {
// // If this cache name isn't present in the array of "expected" cache names, then delete it.
// console.log('Deleting out of date cache:', cacheName);
// return caches.delete(cacheName);
// }
// })
// );
// })
// .catch(function(){
// console.log("Error while clearing cache")
// })
// );
console.log('CT Service worker activated')
})

self.addEventListener('push', function (event) {
console.log('Push event: ', event)
// get all the notification data
var notificationData = JSON.parse(event.data.text())
var title = notificationData.title
var notificationOptions = notificationData.notificationOptions
var data = notificationOptions.data
var key
if (typeof data !== 'undefined') {
key = data.wzrk_id
}
if (typeof key === 'undefined') {
key = title
}
localforage.setItem(key, event.data.text()).then(function (value) {
// console.log("persisted");
}).catch(function (err) {
// This code runs if there were any errors
console.log('Error in persisting')
})

// two global variables for backward compatibility
globalRedirectPath = notificationData.redirectPath
globalNotificationData = notificationData

var raiseNotificationViewedPath = notificationData.raiseNotificationViewedPath
if (typeof raiseNotificationViewedPath !== 'undefined') {
// raise notification viewed event
fetch(raiseNotificationViewedPath, { mode: 'no-cors' }) // ignore the response
}
event.waitUntil(self.registration.showNotification(title, notificationOptions))
})

function onClick (event, redirectPath, notificationData) {
var finalDeepLink = redirectPath
var silentRequest = true // are opening up a new window or sending a quiet get request from here?
if (event.action === 'action1') {
// button 1 was clicked
if (typeof notificationData.notificationOptions.actions[0].deepLink !== 'undefined') {
finalDeepLink += '&r=' + encodeURIComponent(notificationData.notificationOptions.actions[0].deepLink)
silentRequest = false
}
finalDeepLink += '&b=' + encodeURIComponent('button1')
} else if (event.action === 'action2') {
// the second button was clicked
if (typeof notificationData.notificationOptions.actions[1].deepLink !== 'undefined') {
finalDeepLink += '&r=' + encodeURIComponent(notificationData.notificationOptions.actions[1].deepLink)
silentRequest = false
}
finalDeepLink += '&b=' + encodeURIComponent('button2')
} else {
// general click
if (typeof notificationData.deepLink !== 'undefined') {
finalDeepLink += '&r=' + encodeURIComponent(notificationData.deepLink)
silentRequest = false
}

finalDeepLink += '&b=' + encodeURIComponent('button0')
}

if (silentRequest) {
fireSilentRequest(finalDeepLink)
} else {
clients.openWindow(finalDeepLink)
}
event.notification.close()
}

self.addEventListener('notificationclick', function (event) {
var notification = event.notification
var data = notification.data
var key
if (typeof data !== 'undefined' && data !== null) {
key = data.wzrk_id
}
if (typeof key === 'undefined') {
key = notification.title
}
var promise = localforage.getItem(key).then(function (value) {
var notificationData = JSON.parse(value)
var redirectPath = notificationData.redirectPath
// console.log("event",event);
// console.log("redirect path: " + redirectPath);
// console.log("notification data: " + notificationData);
onClick(event, redirectPath, notificationData)
}).catch(function (err) {
// This code runs if there were any errors
// onClick below for backward compatibility
onClick(event, globalRedirectPath, globalNotificationData)
console.log(err)
})
event.waitUntil(promise)
})

var fireSilentRequest = function (url) {
// add the silent parameter to the deeplink so that LC knows not to raise an error
url += '&s=true'

// use the fetch API to make a silent request (we don't care about the response here)
fetch(url, { mode: 'no-cors' })
}
Loading