Skip to content

Commit

Permalink
Merge pull request #270 from asieduernest12/master
Browse files Browse the repository at this point in the history
Improve post install behaviour
  • Loading branch information
asieduernest12 authored Aug 15, 2023
2 parents 9e977ee + 6d8897b commit d248679
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 6 deletions.
2 changes: 2 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ declare namespace NodeJS {
SHORTCUT: string;
VERSION: string;
NAME: string;
HOME_URL: string;
ENABLE_TRACKING: string
}
}

Expand Down
29 changes: 23 additions & 6 deletions src/background/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import type { PrefStore } from 'index';

import Logger from '~services/Logger';
import TabHelper from '~services/TabHelper';
import TrackEventService, { EventCategory } from '~services/TrackEventService';
import { APP_PREFS_STORE_KEY, DisplayColorMode, STORAGE_AREA, USER_PREF_STORE_KEY } from '~services/config';
import defaultPrefs from '~services/preferences';
import runTimeHandler from '~services/runTimeHandler';
Expand All @@ -21,10 +22,13 @@ const setBadgeText = (badgeTextDetails: chrome.action.BadgeTextDetails, runner =
return chrome?.action?.setBadgeText(badgeTextDetails) || browser.browserAction.setBadgeText(badgeTextDetails);
};

const fireUpdateNotification = async (eventReason: chrome.runtime.OnInstalledReason, browserTargetName: string = process.env.TARGET) => {
if (await storage.get(USER_PREF_STORE_KEY)) {
return;
}
const openInstallationWelcomePage = async (
eventReason: chrome.runtime.OnInstalledReason,
browserTargetName: string = process.env.TARGET,
) => {
// if (await storage.get(USER_PREF_STORE_KEY)) {
// return;
// }

chrome.tabs.create({
active: true,
Expand Down Expand Up @@ -138,8 +142,21 @@ function onInstallHandler(event: chrome.runtime.InstalledDetails) {

const eventReason = event.reason;

if (/install|update/.test(eventReason) || process.env.NODE_ENV === 'production') {
fireUpdateNotification(eventReason);
const newVersion = process.env.VERSION;
const { previousVersion } = event;
const isNewVersion = previousVersion !== newVersion;
Logger.logInfo({ newVersion, previousVersion, isNewVersion });

TrackEventService.trackEvent({
eventCategory: EventCategory.APP_EVENT,
eventName: 'install',
eventType: eventReason,
newVersion,
previousVersion,
});

if ((isNewVersion && /install|update/.test(eventReason)) || process.env.NODE_ENV === 'production') {
openInstallationWelcomePage(eventReason);
}

initializeAppPref();
Expand Down
3 changes: 3 additions & 0 deletions src/popup/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import './../styles/style.css';

import { useStorage } from '@plasmohq/storage';

import TrackEventService, { EventCategory } from '~services/TrackEventService';
import { APP_PREFS_STORE_KEY, COLOR_MODE_STATE_TRANSITIONS, DisplayColorMode, STORAGE_AREA } from '~services/config';
import documentParser from '~services/documentParser';
import defaultPrefs from '~services/preferences';
Expand Down Expand Up @@ -64,6 +65,8 @@ function IndexPopup() {
}, [tabSession]);

useEffect(() => {
TrackEventService.trackEvent({ eventCategory: EventCategory.USER_EVENT, eventName: 'open-popup', eventType: 'click' });

(async () => {
const _activeTab = await TabHelper.getActiveTab(true);
setActiveTab(_activeTab);
Expand Down
29 changes: 29 additions & 0 deletions src/services/TrackEventService.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import Logger from './Logger';

export enum EventCategory {
APP_EVENT = 'APP_EVENT',
INTERNAL_CODE_EVENT = 'INTERNAL_CODE_EVENT',
USER_EVENT = 'USER_EVENT',
}

function trackEvent(
eventData: { eventCategory: EventCategory; eventName: string; eventType: string; [key: string]: any },
appData: { browser; version } = { browser: process.env.TARGET, version: process.env.VERSION },
date = new Date(),
enableTracking = /true/.test(process.env.ENABLE_TRACKING),
) {
Logger.logInfo({ enableTracking });
if (!enableTracking) {
return;
}

const params = new URLSearchParams({ ...{ time: date.toString(), time_iso: date.toISOString(), ...eventData }, ...appData });
Logger.logInfo('track-event', params.toString());
return fetch(process.env.HOME_URL ?? 'https://jiffyreader.com' + `/track-event?${params.toString()}`);
}

const TrackEventService = {
trackEvent,
};

export default TrackEventService;

0 comments on commit d248679

Please sign in to comment.