Skip to content

Commit

Permalink
Merge pull request tidepool-org#397 from tidepool-org/krystophv/electron
Browse files Browse the repository at this point in the history
Electron
  • Loading branch information
krystophv authored Sep 6, 2017
2 parents 3211874 + 5d4d5da commit 09ffc8e
Show file tree
Hide file tree
Showing 289 changed files with 12,915 additions and 4,830 deletions.
33 changes: 31 additions & 2 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
{
stage: 0
}
"presets": [
["env", { "targets": { "node": 7 }, "useBuiltIns": true }],
"stage-0",
"react"
],
"plugins": ["add-module-exports"],
"env": {
"production": {
"presets": ["react-optimize"],
"plugins": ["babel-plugin-dev-expression"]
},
"development": {
"plugins": [
"transform-class-properties",
"transform-es2015-classes"
],
"presets": ["react-hmre"]
},
"test": {
"plugins": [
["resolver", { "resolveDirs": [ "app/node_modules" ]}],
["webpack-loaders", { "config": "webpack.config.test.js", "verbose": false }],
"babel-plugin-rewire",
["transform-define", {
"__TEST__": "true",
"__DEBUG__": false
}]
]
}
}
}
3 changes: 3 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
app/dist/
app/main.js
node_modules
13 changes: 11 additions & 2 deletions .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,15 @@
"no-use-before-define": 0
},
"plugins": [
"react"
]
"react",
"promise",
"import"
],
"settings": {
"import/resolver": {
"webpack": {
"config": "webpack.config.eslint.js"
}
}
}
}
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,19 @@ logs
results
config/
build
build/Release
.eslintcache
dist
dist.zip
release
app/main.js
app/main.js.map
app/bundle.js
app/bundle.js.map
app/style.css
app/style.css.map
main.js
main.js.map

test/carelink/overlaps/test-account.csv
test/node/carelink/overlaps/test-account.csv
Expand All @@ -25,7 +36,9 @@ lib/medtronic/cli/*.json
tmp
npm-debug.log
node_modules
app/node_modules
bower_components
coverage

.DS_Store
.idea
Expand Down
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7.4.0
17 changes: 0 additions & 17 deletions .travis.yml

This file was deleted.

181 changes: 131 additions & 50 deletions README.md

Large diffs are not rendered by default.

104 changes: 47 additions & 57 deletions lib/redux/actions/async.js → app/actions/async.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,32 @@
* == BSD2 LICENSE ==
*/

/* global chrome */

import _ from 'lodash';
import async from 'async';
import semver from 'semver';
import os from 'os';
import { push } from 'react-router-redux';

import sundial from 'sundial';

import * as actionTypes from '../constants/actionTypes';
import * as actionSources from '../constants/actionSources';
import { pages, paths, steps, urls } from '../constants/otherConstants';
import { pages, pagesMap, paths, steps, urls } from '../constants/otherConstants';
import errorText from '../constants/errors';
import * as metrics from '../constants/metrics';

import * as syncActions from './sync';
import * as actionUtils from './utils';
import personUtils from '../../core/personUtils';
import personUtils from '../../lib/core/personUtils';

let services = {};
let versionInfo = {};
let daysForCareLink = null;

let hostMap = {
'darwin': 'mac',
'win32' : 'win',
'linux': 'linux',
};
/*
* ASYNCHRONOUS ACTION CREATORS
*/
Expand All @@ -56,7 +60,7 @@ export function doAppInit(opts, servicesToInit) {
const { api, carelink, device, localStore, log } = services;

dispatch(syncActions.initRequest());
dispatch(syncActions.hideUnavailableDevices(opts.os));
dispatch(syncActions.hideUnavailableDevices(opts.os || hostMap[os.platform()]));

log('Initializing local store.');
localStore.init(localStore.getInitialState(), function(localStoreResult){
Expand All @@ -73,7 +77,7 @@ export function doAppInit(opts, servicesToInit) {
if (carelinkError) {
return dispatch(syncActions.initFailure(carelinkError));
}
log(`Initializing api`);
log('Initializing api');
api.init(function(apiError, apiResult){
if (apiError) {
return dispatch(syncActions.initFailure(apiError));
Expand All @@ -85,7 +89,7 @@ export function doAppInit(opts, servicesToInit) {
dispatch(syncActions.setNewPatientUrl(api.makeBlipUrl(paths.NEW_PATIENT)));
let session = apiResult;
if (session === undefined) {
dispatch(syncActions.setPage(pages.LOGIN));
dispatch(setPage(pages.LOGIN));
dispatch(syncActions.initSuccess());
return dispatch(doVersionCheck());
}
Expand All @@ -94,11 +98,6 @@ export function doAppInit(opts, servicesToInit) {
if (err) {
return dispatch(syncActions.initFailure(err));
}
// remove env-switching context menu after login
if (typeof chrome !== 'undefined') {
services.log('Removing Chrome context menu');
chrome.contextMenus.removeAll();
}
dispatch(syncActions.initSuccess());
dispatch(doVersionCheck());
dispatch(syncActions.setUserInfoFromToken({
Expand Down Expand Up @@ -130,11 +129,6 @@ export function doLogin(creds, opts) {
if (err) {
return dispatch(syncActions.loginFailure(err.status));
}
// remove env-switching context menu after login
if (typeof chrome !== 'undefined') {
services.log('Removing Chrome context menu');
chrome.contextMenus.removeAll();
}
dispatch(syncActions.loginSuccess({
user: results[0].user,
profile: results[1],
Expand All @@ -143,13 +137,13 @@ export function doLogin(creds, opts) {

// detect if a VCA here and redirect to clinic user select screen
if(personUtils.userHasRole(results[0].user, 'clinic')){
return dispatch(syncActions.setPage(pages.CLINIC_USER_SELECT, actionSources.USER, {metric: {eventName: metrics.CLINIC_SEARCH_DISPLAYED}}));
return dispatch(setPage(pages.CLINIC_USER_SELECT, actionSources.USER, {metric: {eventName: metrics.CLINIC_SEARCH_DISPLAYED}}));
}

// detect if a DSA here and redirect to data storage screen
const { targetUsersForUpload } = getState();
if (_.isEmpty(targetUsersForUpload)) {
return dispatch(syncActions.setPage(pages.NO_UPLOAD_TARGETS));
return dispatch(setPage(pages.NO_UPLOAD_TARGETS));
}

const { uploadTargetUser } = getState();
Expand All @@ -170,11 +164,11 @@ export function doLogout() {
api.user.logout((err) => {
if (err) {
dispatch(syncActions.logoutFailure());
dispatch(syncActions.setPage(pages.LOGIN, actionSources.USER));
dispatch(setPage(pages.LOGIN, actionSources.USER));
}
else {
dispatch(syncActions.logoutSuccess());
dispatch(syncActions.setPage(pages.LOGIN, actionSources.USER));
dispatch(setPage(pages.LOGIN, actionSources.USER));
}
});
};
Expand Down Expand Up @@ -256,28 +250,14 @@ export function doDeviceUpload(driverId, opts = {}, utc) {

device.detect(driverId, opts, (err, dev) => {
if (err) {
if ((os === 'mac' && _.get(targetDevice, ['showDriverLink', os], false) === true) ||
(os === 'win' && _.get(targetDevice, ['showDriverLink', os], false) === true)) {
let displayErr = new Error();
let driverLinkErrProps = {
details: err.message,
utc: actionUtils.getUtc(utc),
code: 'E_DRIVER',
version: version
};
displayErr.driverLink = urls.DRIVER_DOWNLOAD;
return dispatch(syncActions.uploadFailure(displayErr, driverLinkErrProps, targetDevice));
}
else {
let displayErr = new Error(errorText.E_SERIAL_CONNECTION);
let deviceDetectErrProps = {
details: err.message,
utc: actionUtils.getUtc(utc),
code: 'E_SERIAL_CONNECTION',
version: version
};
return dispatch(syncActions.uploadFailure(displayErr, deviceDetectErrProps, targetDevice));
}
let displayErr = new Error(errorText.E_SERIAL_CONNECTION);
let deviceDetectErrProps = {
details: err.message,
utc: actionUtils.getUtc(utc),
code: 'E_SERIAL_CONNECTION',
version: version
};
return dispatch(syncActions.uploadFailure(displayErr, deviceDetectErrProps, targetDevice));
}

if (!dev && opts.filename == null) {
Expand Down Expand Up @@ -487,9 +467,9 @@ export function clickDeviceSelectionDone() {
}
}
if (isClinicAccount) {
return dispatch(syncActions.setPage(pages.MAIN, undefined, {metric: {eventName: metrics.CLINIC_DEVICES_DONE}}));
return dispatch(setPage(pages.MAIN, undefined, {metric: {eventName: metrics.CLINIC_DEVICES_DONE}}));
}
return dispatch(syncActions.setPage(pages.MAIN, undefined, {metric: {eventName: metrics.CHOOSE_DEVICES_DONE}}));
return dispatch(setPage(pages.MAIN));
});
}
};
Expand Down Expand Up @@ -523,9 +503,9 @@ export function clickEditUserNext(profile) {
return _.includes(supportedDeviceKeys, key);
});
if (_.isEmpty(targetedDevices) || !atLeastOneDeviceSupportedOnSystem) {
return dispatch(syncActions.setPage(pages.SETTINGS));
return dispatch(setPage(pages.SETTINGS));
} else {
return dispatch(syncActions.setPage(pages.MAIN));
return dispatch(setPage(pages.MAIN));
}
});
}
Expand Down Expand Up @@ -553,7 +533,7 @@ export function retrieveTargetsFromStorage() {
const isClinicAccount = personUtils.userHasRole(allUsers[loggedInUser], 'clinic');

if (isClinicAccount) {
return dispatch(syncActions.setPage(pages.CLINIC_USER_SELECT, null, /*{metric: {eventName: metrics.CLINIC_SEARCH_DISPLAYED}}*/));
return dispatch(setPage(pages.CLINIC_USER_SELECT, null, /*{metric: {eventName: metrics.CLINIC_SEARCH_DISPLAYED}}*/));
}
// redirect based on having a supported device if not clinic account
if (!_.isEmpty(_.get(targetDevices, uploadTargetUser))) {
Expand Down Expand Up @@ -607,12 +587,12 @@ export function retrieveTargetsFromStorage() {
}

if (atLeastOneDeviceSupportedOnSystem) {
return dispatch(syncActions.setPage(pages.MAIN));
return dispatch(setPage(pages.MAIN));
} else {
return dispatch(syncActions.setPage(pages.SETTINGS));
return dispatch(setPage(pages.SETTINGS));
}
} else {
return dispatch(syncActions.setPage(pages.SETTINGS));
return dispatch(setPage(pages.SETTINGS));
}
};
}
Expand All @@ -634,7 +614,7 @@ export function createCustodialAccount(profile) {
dispatch(syncActions.clinicAddEmail());
}
dispatch(syncActions.setUploadTargetUser(account.userid));
dispatch(syncActions.setPage(pages.SETTINGS));
dispatch(setPage(pages.SETTINGS));
}
});
};
Expand All @@ -658,7 +638,7 @@ export function setUploadTargetUserAndMaybeRedirect(targetId) {
return _.includes(supportedDeviceKeys, key);
});
if (_.isEmpty(targetedDevices) || !atLeastOneDeviceSupportedOnSystem) {
return dispatch(syncActions.setPage(pages.SETTINGS));
return dispatch(setPage(pages.SETTINGS));
}
};
}
Expand All @@ -675,16 +655,26 @@ export function checkUploadTargetUserAndMaybeRedirect() {
return _.includes(supportedDeviceKeys, key);
});
if (_.isEmpty(targetedDevices) || !atLeastOneDeviceSupportedOnSystem) {
return dispatch(syncActions.setPage(pages.SETTINGS, undefined, {metric: {eventName: metrics.CLINIC_NEXT}}));
return dispatch(setPage(pages.SETTINGS, undefined, {metric: {eventName: metrics.CLINIC_NEXT}}));
} else {
return dispatch(syncActions.setPage(pages.MAIN, undefined, {metric: {eventName: metrics.CLINIC_NEXT}}));
return dispatch(setPage(pages.MAIN, undefined, {metric: {eventName: metrics.CLINIC_NEXT}}));
}
};
}

export function clickAddNewUser(){
return (dispatch, getState) =>{
dispatch(syncActions.setUploadTargetUser(null));
dispatch(syncActions.setPage(pages.CLINIC_USER_EDIT, undefined, {metric: {eventName: metrics.CLINIC_ADD}}));
dispatch(setPage(pages.CLINIC_USER_EDIT, undefined, {metric: {eventName: metrics.CLINIC_ADD}}));
};
}

export function setPage(page, actionSource = actionSources[actionTypes.SET_PAGE], metric) {
return (dispatch, getState) => {
if(pagesMap[page]){
const meta = { source: actionSource };
_.assign(meta, metric);
dispatch(push({pathname: pagesMap[page], state: { meta }}));
}
};
}
File renamed without changes.
Loading

0 comments on commit 09ffc8e

Please sign in to comment.