Skip to content

Commit

Permalink
Merge pull request #1793 from KhalisFoundation/9.1.2-fixes
Browse files Browse the repository at this point in the history
9.1.2 Fixes
  • Loading branch information
inderpreetsingh committed Jul 3, 2023
2 parents ddd7a8b + 1b520b4 commit 110f2cf
Show file tree
Hide file tree
Showing 26 changed files with 452 additions and 153 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Powered by [<img height="30" src="http://www.banidb.com/wp-content/uploads/2018/

- Clone repository
- Run `npm install` in the repository root
- Create `.env` and add the variable `GOOGLE_ANALYTICS_ID=<ID>`
- Create `.env` and add the variable `GA_MEASUREMENT_ID=<G-XXXXXXXXX>` and `GA_API_SECRET=<XXXXXXXXXXXX>`

## Running

Expand Down
39 changes: 35 additions & 4 deletions analytics.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const ua = require('universal-analytics'); // https://www.npmjs.com/package/universal-analytics
const isOnline = require('is-online');
// require('dotenv').config();
require('dotenv').config();
const fetch = require('node-fetch');

const pjson = require('./package.json');

Expand Down Expand Up @@ -29,7 +30,7 @@ class Analytics {
* @param label
* @param value
*/
trackEvent(category, action, label, value) {
trackEvent({ category, action, label, value }) {
const useragent = this.store.get('user-agent');
const params = {
ec: category,
Expand All @@ -39,13 +40,42 @@ class Analytics {
cd1: appVersion,
useragent,
};
const url = `https://www.google-analytics.com/mp/collect?measurement_id=${process.env.GA_MEASUREMENT_ID}&api_secret=${process.env.GA_API_SECRET}`;
const requestData = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
client_id: this.usr.cid,
events: [
{
name: category,
params,
},
],
}),
};

if (process.env.NODE_ENV !== 'development') {
// TODO: need to add variable that stops statistics collection
isOnline().then(online => {
isOnline().then((online) => {
// TODO: for offline users, come up with a way of storing and send when online.
if (online && this.usr) {
this.usr.event(params).send();

// Code specific to GA4
fetch(url, requestData)
.then((response) => {
if (response.ok) {
console.log('Event sent successfully using GA4');
} else {
console.error('Error sending event using GA4:');
}
})
.catch((error) => {
console.error('Error occurred while sending event using GA4:', error);
});
}
});
} else {
Expand All @@ -61,10 +91,11 @@ class Analytics {
* @param title
* @param hostname
*/
// when we will remove UA, we can safely remove the below function since it will be outdated
trackPageView(path, title, hostname = 'SikhiToTheMax Desktop') {
if (process.env.NODE_ENV !== 'development') {
if (this.store.get('userPrefs.app.analytics.collectStatistics')) {
isOnline().then(online => {
isOnline().then((online) => {
if (online && this.usr) {
this.usr
.pageview({
Expand Down
10 changes: 5 additions & 5 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,11 @@ const secondaryWindows = {
endChangelogOpenTimer = new Date().getTime();
store.set('changelog-seen', appVersion);
store.set('changelog-seen-count', count + 1);
global.analytics.trackEvent(
'changelog',
'closed',
(endChangelogOpenTimer - startChangelogOpenTimer) / 1000.0,
);
global.analytics.trackEvent({
category: 'changelog',
action: 'closed',
value: (endChangelogOpenTimer - startChangelogOpenTimer) / 1000.0,
});
},
show: () => {
startChangelogOpenTimer = new Date().getTime();
Expand Down
40 changes: 28 additions & 12 deletions www/main/addons/bani-controller/components/BaniController.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ const BaniController = ({ onScreenClose, className }) => {
const [socketData, setSocketData] = useState(null);

// Store State
const { isListeners, overlayScreen } = useStoreState(state => state.app);
const { setOverlayScreen, setListeners } = useStoreActions(actions => actions.app);
const { isListeners, overlayScreen } = useStoreState((state) => state.app);
const { setOverlayScreen, setListeners } = useStoreActions((actions) => actions.app);

const { adminPin, code, isConnected } = useStoreState(state => state.baniController);
const { adminPin, code, isConnected } = useStoreState((state) => state.baniController);
const { setAdminPin, setCode, setConnection } = useStoreActions(
actions => actions.baniController,
(actions) => actions.baniController,
);

const {
Expand All @@ -57,7 +57,7 @@ const BaniController = ({ onScreenClose, className }) => {
miscSlideText,
isMiscSlideGurmukhi,
savedCrossPlatformId,
} = useStoreState(state => state.navigator);
} = useStoreState((state) => state.navigator);

const {
setIsSundarGutkaBani,
Expand All @@ -68,7 +68,7 @@ const BaniController = ({ onScreenClose, className }) => {
setMiscSlideText,
setIsMiscSlideGurmukhi,
setSavedCrossPlatformId,
} = useStoreActions(state => state.navigator);
} = useStoreActions((state) => state.navigator);

const {
gurbaniFontSize,
Expand All @@ -77,7 +77,7 @@ const BaniController = ({ onScreenClose, className }) => {
teekaFontSize,
baniLength,
// mangalPosition,
} = useStoreState(state => state.userSettings);
} = useStoreState((state) => state.userSettings);

const fontSizes = {
gurbani: parseInt(gurbaniFontSize, 10),
Expand All @@ -86,7 +86,7 @@ const BaniController = ({ onScreenClose, className }) => {
transliteration: parseInt(transliterationFontSize, 10),
};

const showSyncError = errorMessage => {
const showSyncError = (errorMessage) => {
setCodeLabel(errorMessage);
setCode(null);
setAdminPin(null);
Expand All @@ -110,9 +110,17 @@ const BaniController = ({ onScreenClose, className }) => {

setConnection(true);
setListeners(true);
analytics.trackEvent({
category: 'sync',
action: 'syncStarted',
});
} else {
showSyncError(i18n.t('TOOLBAR.SYNC_CONTROLLER.CODE_ERR'));
analytics.trackEvent('sync', 'error');
analytics.trackEvent({
category: 'sync',
action: i18n.t('TOOLBAR.SYNC_CONTROLLER.CODE_ERR'),
label: 'error',
});
}
} else {
showSyncError(i18n.t('TOOLBAR.SYNC_CONTROLLER.INTERNET_ERR'));
Expand All @@ -130,7 +138,10 @@ const BaniController = ({ onScreenClose, className }) => {
onEnd(code);
setCode(null);
setAdminPin(null);
analytics.trackEvent('syncStopped', true);
analytics.trackEvent({
category: 'sync',
action: 'syncStopped',
});
} else {
await remoteSyncInit();
}
Expand All @@ -140,6 +151,11 @@ const BaniController = ({ onScreenClose, className }) => {
if (overlayScreen !== 'lock-screen') {
setOverlayScreen('lock-screen');
}
analytics.trackEvent({
category: 'sync',
action: 'lockScreen',
label: 'lockScreen button clicked',
});
};

useEffect(() => {
Expand All @@ -149,7 +165,7 @@ const BaniController = ({ onScreenClose, className }) => {
useEffect(() => {
if (isListeners && adminPin) {
if (window.socket !== undefined) {
window.socket.on('data', data => {
window.socket.on('data', (data) => {
setSocketData(data);
});
}
Expand Down Expand Up @@ -215,7 +231,7 @@ const BaniController = ({ onScreenClose, className }) => {

<div className="sync-code-num"> {code || '...'} </div>

{baniControllerItems.map(item => (
{baniControllerItems.map((item) => (
<BaniControllerItem key={item.title} {...item} />
))}

Expand Down
37 changes: 18 additions & 19 deletions www/main/addons/bani-controller/components/ConnectionSwitch.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,26 @@ import PropTypes from 'prop-types';
import { Switch } from '../../../common/sttm-ui';

const remote = require('@electron/remote');

const analytics = remote.getGlobal('analytics');

const ConnectionSwitch = props => {
return (
<div className="connection-switch-container">
<p>Disable all the remote connections to SikhiToTheMax</p>
<Switch
controlId="bani-controller"
onToggle={() => {
props.syncToggle();
analytics.trackEvent(
'controller',
'connection',
props.isConnected ? 'Enabled' : 'Disabled',
);
}}
value={!props.isConnected}
/>
</div>
);
};
const ConnectionSwitch = (props) => (
<div className="connection-switch-container">
<p>Disable all the remote connections to SikhiToTheMax</p>
<Switch
controlId="bani-controller"
onToggle={() => {
props.syncToggle();
analytics.trackEvent({
category: 'controller',
action: 'connection',
label: props.isConnected ? 'Enabled' : 'Disabled',
});
}}
value={!props.isConnected}
/>
</div>
);

ConnectionSwitch.propTypes = {
isConnected: PropTypes.bool,
Expand Down
31 changes: 30 additions & 1 deletion www/main/addons/bani-controller/hooks/use-socket-listeners.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,12 @@ const useSocketListeners = (
const listenerActions = {
shabad: (payload) => {
changeActiveShabad(payload.shabadId, payload.verseId);
analytics.trackEvent('controller', 'shabad', `${payload.shabadId}`);
analytics.trackEvent({
category: 'controller',
action: 'shabad',
label: 'shabadId',
value: payload.shabadId,
});
},
text: (payload) => {
if (!isMiscSlide) {
Expand All @@ -50,6 +55,12 @@ const useSocketListeners = (
if (isMiscSlideGurmukhi !== payload.isGurmukhi) {
setIsMiscSlideGurmukhi(payload.isGurmukhi);
}
analytics.trackEvent({
category: 'controller',
action: 'send text',
label: 'text',
value: payload.text,
});
},
bani: (payload) => {
if (isCeremonyBani) {
Expand All @@ -69,6 +80,12 @@ const useSocketListeners = (
setSavedCrossPlatformId(payload.verseId);
}
}
analytics.trackEvent({
category: 'controller',
action: 'bani',
label: 'baniId',
value: payload.baniId,
});
},
ceremony: (payload) => {
if (!isCeremonyBani) {
Expand All @@ -82,6 +99,12 @@ const useSocketListeners = (
if (ceremonyId !== payload.ceremonyId) {
setCeremonyId(payload.ceremonyId);
}
analytics.trackEvent({
category: 'controller',
action: 'ceremony',
label: 'ceremonyId',
value: payload.ceremonyId,
});
},
'request-control': () =>
handleRequestControl(
Expand All @@ -101,6 +124,12 @@ const useSocketListeners = (
if (settings.action === 'changeFontSize') {
changeFontSize(settings.target, settings.value === 'plus');
}
analytics.trackEvent({
category: 'controller',
action: 'settings',
label: settings.action,
value: settings.value,
});
},
};
// if its an event from web and not from desktop itself
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ const getBaniControllerItems = ({
});
setMiscSlideText(syncString);
analytics.trackEvent('controller', 'codePresented', true);
analytics.trackEvent({
category: 'controller',
action: 'codePresented',
value: true,
});
}
}}
>
Expand Down
11 changes: 6 additions & 5 deletions www/main/addons/bani-controller/utils/handle-request-control.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,12 @@ const handleRequestControl = (
});
}
}
analytics.trackEvent(
'controller',
'connection',
isPinCorrect ? 'Connection Succesfull' : 'Connection Failed',
);
analytics.trackEvent({
category: 'controller',
action: 'connection',
label: 'controller_connection_attempt',
value: isPinCorrect ? 'Connection Succesfull' : 'Connection Failed',
});
};

export default handleRequestControl;
6 changes: 5 additions & 1 deletion www/main/addons/bani-controller/utils/share-sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ async function getNewCode(host) {

newCode = namespaceString;
} catch (error) {
analytics.trackEvent('sync', 'error', error);
analytics.trackEvent({
category: 'sync',
action: 'error',
value: error,
});
new Noty({
type: 'error',
text: i18n.t('TOOLBAR.SYNC_CONTROLLER.CODE_ERR'),
Expand Down
Loading

0 comments on commit 110f2cf

Please sign in to comment.