Skip to content

Commit

Permalink
remove analytics
Browse files Browse the repository at this point in the history
  • Loading branch information
nagyzsolthun committed Nov 30, 2021
1 parent 5278530 commit 0661a07
Show file tree
Hide file tree
Showing 14 changed files with 28 additions and 161 deletions.
2 changes: 0 additions & 2 deletions chrome/_locales/de/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@
"speechOptionsPage": {"message": "Sprechen"},
"contactPage": {"message": "Kontakt"},
"selectionOptions": {"message": "Text Markieren"},
"analytics": {"message": "Analytik"},
"ttsOptions": {"message": "Stimme"},
"speedOptions": {"message": "Geschwindigkeit"},
"hoverSelect": {"message": "mit der Maus gewiesen"},
"arrowSelect": {"message": "Pfeiltasten"},
"browserSelect": {"message": "Browser eingebaute Selektion"},
"userActivity": {"message": "Benutzeraktivität"},
"userActivityTooltip": {"message": "senden Sie anonyme Daten zur Verbesserung von click2speech"},
"reviews": {"message": "Meinungen"},
"support": {"message": "Unterstützung"},
"turnOff": {"message": "ausschalten"},
Expand Down
2 changes: 0 additions & 2 deletions chrome/_locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@
"speechOptionsPage": {"message": "Speech"},
"contactPage": {"message": "Contact"},
"selectionOptions": {"message": "Text Selection"},
"analytics": {"message": "Analytics"},
"ttsOptions": {"message": "Voice"},
"speedOptions": {"message": "Speed"},
"hoverSelect": {"message": "mouse pointed"},
"arrowSelect": {"message": "arrow keys"},
"browserSelect": {"message": "built-in browser selection"},
"userActivity": {"message": "user activity"},
"userActivityTooltip": {"message": "send anonymous data for improving click2speech"},
"reviews": {"message": "Reviews"},
"support": {"message": "Support"},
"turnOff": {"message": "turn off"},
Expand Down
31 changes: 0 additions & 31 deletions chrome/background/modules/analytics.js

This file was deleted.

62 changes: 13 additions & 49 deletions chrome/background/modules/background.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
import { browser, Runtime } from "webextension-polyfill-ts"
import { scheduleAnalytics } from "./analytics.js";
import { getVoice, getDefaultVoiceName, getSortedVoices } from "./tts/VoiceSelector";
import * as iconDrawer from "./icon/drawer";
import popUrl from "./pop.wav"

interface SpeechRequest {
id: string,
text: string,
source: string,
text: string
}

// ===================================== incoming messages =====================================
Expand Down Expand Up @@ -49,17 +47,12 @@ messageListeners.getVoices = async () => {
const speechVoices = await getSortedVoices();
return speechVoices.map(speechVoice => ({name: speechVoice.name, lan: speechVoice.lang}));
}
messageListeners.analytics = async (analytics) => {
const { category, action, label } = analytics;
requestAnalytics(category, action, label);
}
messageListeners.getDisabledVoices = async () => getDisabledVoices();
messageListeners.getBrowserName = () => getBrowserName();
messageListeners.arrowPressed = async () => {
userInteractionAudio.currentTime = 0;
userInteractionAudio.play();
iconDrawer.drawInteraction();
requestAnalytics('interaction', 'arrow', 'press');
};

// ===================================== content port =====================================
Expand Down Expand Up @@ -89,10 +82,6 @@ async function onSpeechRequest(port: Runtime.Port, request: SpeechRequest) {
} else {
processRequest(request.id);
}

if(cancelRequests.size && isEmpty(request.text)) {
requestAnalytics("tts", "stop", request.source);
}
};

function onPortClose(port: Runtime.Port) {
Expand All @@ -116,7 +105,7 @@ async function processRequest(id: string) {
return;
}

const {text, source} = speechRequests.get(id);
const {text} = speechRequests.get(id);
const empty = isEmpty(text);
if(empty) {
onSpeechEnd(id);
Expand All @@ -133,7 +122,6 @@ async function processRequest(id: string) {
const speed = await getSetting("speed");
const utterance = createUtterance(id, text, voice, speed);
speechSynthesis.speak(utterance);
requestAnalytics('tts', 'read', source);
}

function isEmpty(text) {
Expand All @@ -159,7 +147,6 @@ function createUtterance(id: string, text: string, voice: SpeechSynthesisVoice,
function onNoVoice(id: string) {
postContentMessage(id, {speechError: id});
onSpeechTermination(id, true);
requestAnalytics('tts', 'noVoice', getDisabledVoices().length+" disabled");
}

function onSpeechStart(id) {
Expand Down Expand Up @@ -224,8 +211,6 @@ function disableVoice(voiceName) {
delete voiceNameToEnable[voiceName];
}, 5*60*1000); // 5 minutes
voiceNameToEnable[voiceName] = enableId;

requestAnalytics('tts', 'error', voiceName);
}

function getDisabledVoices() {
Expand Down Expand Up @@ -266,37 +251,31 @@ function pauseResume() {
getSetting("turnedOn").then(turnedOn => {
if(turnedOn !== undefined) {
drawIcon(turnedOn);
populatAnalyticsFlag();
removeAnalyticsFlag();
return;
}
console.log("persist default settings");
populateDefaultSettings();

const appVersion = browser.runtime.getManifest().version;
scheduleAnalytics('storage','defaults', appVersion);
})

// temporary function to add analytics flag for old versions
async function populatAnalyticsFlag() {
const analytics = await getSetting("analytics");
if(analytics === undefined) {
console.log("persist analytics flag");
browser.storage.local.set({analytics: true});
scheduleAnalytics('storage', 'analytics', 'default');
}
// temporary function to remove analytics flag for old versions
async function removeAnalyticsFlag() {
const analytics = await getSetting("analytics");
if(analytics !== undefined) {
console.log("remove analytics flag");
browser.storage.local.remove("analytics");
}
}

async function populateDefaultSettings() {
const defaultVoiceName = await getDefaultVoiceName();
requestAnalytics('storage','defaultVoice', defaultVoiceName);
await browser.storage.local.set({
turnedOn: true,
preferredVoice: defaultVoiceName,
speed: 1.2,
hoverSelect: true,
arrowSelect: false,
browserSelect: false,
analytics: true
browserSelect: false
});
iconDrawer.drawTurnedOn();
}
Expand All @@ -311,16 +290,8 @@ function getSettings() {
}

browser.storage.onChanged.addListener(async changes => {
for(var setting in changes) {
if(setting == "turnedOn") {
handleOnOffEvent(changes.turnedOn.newValue);
}
if(setting === "analytics" && changes[setting].newValue === false) {
scheduleAnalytics('storage', 'analytics', false); // otherwise already blocked
}
if(changes[setting].oldValue !== undefined && changes[setting].newValue !== undefined) {
requestAnalytics('storage',setting,changes[setting].newValue); // undefined: no analytics when default or clearing
}
if("turnedOn" in changes) {
handleOnOffEvent(changes.turnedOn.newValue);
}
const settings = await getSettings();
contentPorts.forEach(port => port.postMessage({ settings }));
Expand Down Expand Up @@ -369,13 +340,6 @@ function loadIconToToolbar() {

// ===================================== others =====================================

async function requestAnalytics(category: string, action: string, label: string) {
const anayltics = await getSetting("analytics");
if(anayltics) {
scheduleAnalytics(category, action, label);
}
}

const userInteractionAudio = new Audio(popUrl);
userInteractionAudio.volume = 0.5;

Expand Down
20 changes: 9 additions & 11 deletions chrome/content/content.js
Original file line number Diff line number Diff line change
Expand Up @@ -809,8 +809,7 @@
var speechRequests = new Map(); // id: {element | range}

/** sends read message with content of element or range
* @param c element|range is added to speechRequests
* @param c.source is used for analytics */
* @param c element|range is added to speechRequests*/
function requestSpeech(request) {
const id = Date.now();
speechRequests.set(id, request);
Expand All @@ -823,8 +822,7 @@
}

const text = textFromRequest(request);
const source = request.source;
backgroundCommunicationPort.postMessage({id, text, source});
backgroundCommunicationPort.postMessage({id, text});
}

function textFromRequest(request) {
Expand All @@ -838,36 +836,36 @@
/** reads text of highlighted element */
function readHovered() {
highlightHovered();
requestSpeech({element:highlightedElement, source:"hoveredClick"});
requestSpeech({element:highlightedElement});
}

/** reads highlighted text + prevents scrolling */
function readElementAndPreventScroll(element,event) {
requestSpeech({element:element, source:"space"});
requestSpeech({element:element});
event.preventDefault(); //stop scrolling
}

/** stops reading + prevents scrolling */
function stopReadingAndPreventScroll(event) {
requestSpeech({source:"space"});
requestSpeech({});
event.preventDefault(); //stop scrolling
}

/** reads the text provided by browserSelect */
function readBrowserSelected() {
requestSpeech({range:userSelectionRange, source:"browserSelect"});
requestSpeech({range:userSelectionRange});
}

/** stops reading + sets source as "browserSelected" */
/** stops reading */
function stopBrowserSelected() {
requestSpeech({source:"browserSelect"});
requestSpeech({});
}

/** if reading: stops reading and cancels event; otherwise reverts highlight (if any) and cancels event
* if no reading, neither highlight => nothing*/
function stopReadingOrRevertHighlight(keyEvent) {
if(speechRequests.size) {
requestSpeech({source:"esc"});
requestSpeech({});
keyEvent.stopPropagation();
return;
}
Expand Down
3 changes: 1 addition & 2 deletions chrome/manifest.build.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ var manifest = {
name: "click2speech",
default_locale: "en",
description: "__MSG_extensionDescription__",
version: "2.1.0",
version: "2.1.1",
content_scripts: [{
matches: ["<all_urls>"],
js: ["content/content.js"]
Expand All @@ -23,7 +23,6 @@ var manifest = {
"128": "img/icon64.png"
},
minimum_chrome_version: "47", // i18n.detectLanguage
content_security_policy: "script-src 'self' https://www.google-analytics.com; object-src 'self'" // Google Anyltics
}

console.log(JSON.stringify(manifest,null,2))
13 changes: 2 additions & 11 deletions chrome/options/src/components/Contact.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import React from "react";
import { FormControl, FormLabel, Link, Box, Divider } from "@material-ui/core";
import translate from "../modules/translate";
import sendAnalytics from "../modules/analytics";
import { useReviewsUrl, useEmail } from "../modules/contacts";

const Contact = () => {
Expand All @@ -16,20 +15,12 @@ const Contact = () => {
<Box>
<FormControl>
<FormLabel>{translate("reviews")}</FormLabel>
<Link
href={reviewsUrl}
target="_blank"
rel="noopener"
onClick={() => sendAnalytics("interaction", "contact", "reviews-click")}
>{reviewsUrl}</Link>
<Link href={reviewsUrl} target="_blank" rel="noopener">{reviewsUrl}</Link>
</FormControl>
<Divider/>
<FormControl>
<FormLabel>{translate("support")}</FormLabel>
<Link
href={emailUrl}
onClick={() => sendAnalytics("interaction", "contact", "support-click")}
>{email}</Link>
<Link href={emailUrl}>{email}</Link>
</FormControl>
</Box>
)
Expand Down
19 changes: 1 addition & 18 deletions chrome/options/src/components/General.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ const General: React.FC = () => {
const [hoverSelect, setHoverSelect] = useStorage<boolean>("hoverSelect");
const [arrowSelect, setArrowSelect] = useStorage<boolean>("arrowSelect");
const [browserSelect, setBrowserSelect] = useStorage<boolean>("browserSelect");
const [analytics, setAnalytics] = useStorage<boolean>("analytics");

const settingsLoading = [hoverSelect, arrowSelect, browserSelect, analytics].some(value => value === undefined);
const settingsLoading = [hoverSelect, arrowSelect, browserSelect].some(value => value === undefined);
if(settingsLoading) {
return null;
}
Expand Down Expand Up @@ -46,22 +45,6 @@ const General: React.FC = () => {
/>
</FormGroup>
</FormControl>
<Divider/>
<FormControl>
<FormLabel>{translate("analytics")}</FormLabel>
<FormGroup>
<Tooltip title={translate("userActivityTooltip")} placement="bottom-start">
<FormControlLabel
control={<Checkbox
checked={analytics}
color="primary"
onChange={() => {setAnalytics(!analytics)}}
/>}
label={translate("userActivity")}
/>
</Tooltip>
</FormGroup>
</FormControl>
</Box>
);
};
Expand Down
8 changes: 1 addition & 7 deletions chrome/options/src/components/Speech.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import translate from '../modules/translate';
import useStorage from '../modules/storage';
import useVoices from '../modules/tts';
import useDisabledVoices from '../modules/voices-disabled';
import sendAnalytics from '../modules/analytics';

export const Speech: React.FC = () => {
return (
Expand Down Expand Up @@ -59,12 +58,7 @@ const VoiceError = () => {
return (
<>
<Typography classes={errorClasses}>no voice available</Typography>
<Link
href={readmeUrl}
target="_blank"
rel="noopener"
onClick={() => sendAnalytics("interaction", "speech-settings", "novoice-url")}
>{readmeUrl}</Link>
<Link href={readmeUrl} target="_blank" rel="noopener">{readmeUrl}</Link>
</>
)
}
Expand Down
6 changes: 0 additions & 6 deletions chrome/options/src/modules-dev/analytics.ts

This file was deleted.

Loading

0 comments on commit 0661a07

Please sign in to comment.