Skip to content

Commit

Permalink
feat: analytics opt-in per type (#985)
Browse files Browse the repository at this point in the history
You can now opt-in to:
- Sessions and browser metrics
- Events
- Page views
- Location
- App errors

Toggle at the top level enables all but app errors, as they could
contain CIDs or file paths, so must be enabled seperately.

fixes: #980


License: MIT
Signed-off-by: Oli Evans <oli@tableflip.io>
  • Loading branch information
olizilla authored Mar 13, 2019
1 parent 45a2650 commit 5c20ac2
Show file tree
Hide file tree
Showing 14 changed files with 453 additions and 141 deletions.
46 changes: 34 additions & 12 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"@tableflip/react-inspector": "^2.3.0",
"brace": "^0.11.1",
"chart.js": "^2.7.2",
"countly-sdk-web": "^18.11.0",
"countly-sdk-web": "^19.2.1",
"d3": "^5.7.0",
"details-polyfill": "^1.1.0",
"file-extension": "^4.0.5",
Expand All @@ -52,15 +52,15 @@
"multiaddr-to-uri": "^4.0.1",
"prop-types": "^15.6.2",
"pull-file-reader": "^1.0.2",
"react": "^16.4.2",
"react": "^16.8.4",
"react-ace": "^6.1.4",
"react-chartjs-2": "^2.7.4",
"react-copy-to-clipboard": "^5.0.1",
"react-country-flag": "^1.0.1",
"react-debounce-render": "^4.0.3",
"react-dnd": "^5.0.0",
"react-dnd-html5-backend": "^5.0.1",
"react-dom": "^16.4.2",
"react-dom": "^16.8.4",
"react-faux-dom": "^4.2.0",
"react-helmet": "^5.2.0",
"react-i18next": "^7.11.0",
Expand Down
44 changes: 31 additions & 13 deletions public/locales/en/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"reset": "Reset",
"language": "Language",
"config": "IPFS Config",
"analytics": "Analytics",
"languageModal": {
"title": "Change Language",
"description": "Pick your preferred language"
Expand All @@ -30,18 +31,35 @@
"downloadCopiedHashDescription": "Use <0>{ctrlKey}</0> + <2>{altKey}</2> + <3>D</3> to download the last copied hash.",
"AnalyticsToggle": {
"label": "Help improve this app by sending anonymous usage data",
"summary": "What data is collected?",
"paragraph1": "Protocol Labs hosts a <1>Countly</1> instance to record anonymous usage data for this app.",
"paragraph2": "The information collected includes:",
"item0": "A random, generated device ID",
"item1": "Session duration",
"item2": "Country code & city from IP address. IP address is discarded",
"item3": "Operating system and version",
"item4": "Display resolution and density",
"item5": "Locale (browser language, e.g German)",
"item6": "Browser information",
"item7": "Which app sections are visited",
"item8": "App errors",
"paragraph3": "No CIDs, filenames, or other personal information are collected. We want metrics to show us which features are useful to help us prioritise what to work on next, and system configuration information to guide our testing."
"summary": "Configure what is collected",
"paragraph1": "No CIDs, filenames, or other personal information are collected. We want metrics to show us which features are useful to help us prioritise what to work on next, and system configuration information to guide our testing.",
"paragraph2": "Protocol Labs hosts a <1>Countly</1> instance to record anonymous usage data for this app.",
"basicInfo": "The following additional information is sent to countly.ipfs.io",
"optionalInfo": "You can opt-in to send the following information:",
"sessions": {
"label": "Sessions",
"summary": "when and how long you use the app, and browser metrics",
"details": "<0>The following browser metrics are sent:</0><1><0>A random, generated device ID</0><1>Timestamp when the session starts</1><2>Periodic timestamps to track duration</2><3>App version e.g. 2.4.4</3><4>Locale e.g. en-GB</4><5>User Agent e.g. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) ...</5><6>Screen resolution e.g. 800x600</6><7>Screen pixel density e.g. 1</7></1>"
},
"events": {
"label": "Events",
"summary": "actions like adding or deleting files, and how long it took",
"details": "App specific actions. We record only that the action happened, how long it took from start to finish, and a count if the event involved multiple items."
},
"views": {
"label": "Page views",
"summary": "which sections of the app you visit",
"details": "Records which sections of the apps are visited. The paths recorded only include the pattern used to match the route rather than the full url. "
},
"location": {
"label": "Location",
"summary": "Country code from IP address. IP address is discarded",
"details": "Your IP address is used to calculate a Country code for your location, like \"FR\" for France. Where consent is not given to track location, an empty location property is sent with all requests to signal to the server to disable the location look up. This information helps guide our translation effort and figure out where we should put on events."
},
"crashes": {
"label": "App errors",
"summary": "JavaScript error messages and stack traces",
"details": "Records JavaScript error messages and stack traces that occur while using the app, where possible. It is very helpful to know when the app is not working for you, but <1>error messages may include identifiable information</1> like CIDs or file paths, so only enable this if you are comfortable sharing that information with us."
}
}
}
7 changes: 4 additions & 3 deletions public/locales/en/status.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@
"paragraph2": "<0>For more info on how to get started with IPFS you can <1>read the guide</1>.</0>"
},
"AskToEnable": {
"label": "Help improve this app by sending anonymous usage data",
"yesLabel": "Enable",
"noLabel": "No thanks"
"label": "Help improve this app by sending anonymous usage data.",
"yesLabel": "OK",
"noLabel": "No thanks",
"detailsLabel": "More info"
}
}
Loading

0 comments on commit 5c20ac2

Please sign in to comment.