From 379c7caaa66cafc6c1b4098587ce72ae6de9d43c Mon Sep 17 00:00:00 2001 From: Almir Kadric Date: Sun, 7 Aug 2016 04:53:37 +0900 Subject: [PATCH 1/2] added auto updates when stationary feature --- src/models/settings.js | 1 + src/models/user-location.js | 15 +++++++++++++-- src/views/map/boolean-settings.js | 3 ++- src/views/map/controls.js | 12 +++++------- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/models/settings.js b/src/models/settings.js index 347101b..f24c184 100644 --- a/src/models/settings.js +++ b/src/models/settings.js @@ -3,6 +3,7 @@ import { observable } from 'mobx' export default { updateXcodeLocation: observable(false), addJitterToMoves: observable(true), + stationaryUpdates: observable(true), speedLimit: observable(4), // ~40-25 km/h zoom: observable(17) // map zoom } diff --git a/src/models/user-location.js b/src/models/user-location.js index 85aa9d2..19276fa 100644 --- a/src/models/user-location.js +++ b/src/models/user-location.js @@ -1,5 +1,5 @@ /* eslint max-len: 0 */ -import { throttle } from 'lodash' +import { random, throttle } from 'lodash' import { observable } from 'mobx' import Alert from 'react-s-alert' @@ -40,8 +40,10 @@ const updateXcodeLocation = throttle(([ lat, lng ]) => { // track location changes for total distance & average speed stats.pushMove(lat, lng) + const jitter = settings.addJitterToMoves.get() ? random(-0.000009, 0.000009, true) : 0 + const xcodeLocationData = - `PokemonLocation` + `PokemonLocation` // write `pokemonLocation.gpx` file fro xcode spoof location const filePath = resolve(remote.getGlobal('tmpProjectPath'), 'pokemonLocation.gpx') @@ -78,4 +80,13 @@ userLocation.intercept(validateCoordinates) // after update userLocation.observe(() => updateXcodeLocation(userLocation)) +// periodically to prevent reversions +window.setInterval(() => { + if (!settings.stationaryUpdates.get()) { + return + } + + updateXcodeLocation(userLocation) +}, 10000) + export default userLocation diff --git a/src/views/map/boolean-settings.js b/src/views/map/boolean-settings.js index fae7e78..37697f9 100644 --- a/src/views/map/boolean-settings.js +++ b/src/views/map/boolean-settings.js @@ -2,10 +2,11 @@ import React from 'react' import { observer } from 'mobx-react' import cx from 'classnames' -import { addJitterToMoves, updateXcodeLocation } from '../../models/settings.js' +import { addJitterToMoves, stationaryUpdates, updateXcodeLocation } from '../../models/settings.js' const settings = [ [ addJitterToMoves, 'Add randomness to moves' ], + [ stationaryUpdates, 'Update even when stationary' ], [ updateXcodeLocation, 'Auto update Xcode location' ] ] diff --git a/src/views/map/controls.js b/src/views/map/controls.js index 325611e..5df0745 100644 --- a/src/views/map/controls.js +++ b/src/views/map/controls.js @@ -15,15 +15,13 @@ const handleMove = action((direction) => { random(0.0000300, 0.000070, true) / speedCoeff : random(0.0000700, 0.000070, true) / speedCoeff - const jitter = settings.addJitterToMoves.get() ? random(-0.000009, 0.000009, true) : 0 - let newLocation switch (direction) { - case 'LEFT': { newLocation = [ userLocation[0] + jitter, userLocation[1] - move ]; break } - case 'RIGHT': { newLocation = [ userLocation[0] + jitter, userLocation[1] + move ]; break } - case 'DOWN': { newLocation = [ userLocation[0] - move, userLocation[1] + jitter ]; break } - case 'UP': { newLocation = [ userLocation[0] + move, userLocation[1] + jitter ]; break } - default: { newLocation = [ userLocation[0] + jitter, userLocation[1] + jitter ] } + case 'LEFT': { newLocation = [ userLocation[0], userLocation[1] - move ]; break } + case 'RIGHT': { newLocation = [ userLocation[0], userLocation[1] + move ]; break } + case 'DOWN': { newLocation = [ userLocation[0] - move, userLocation[1] ]; break } + case 'UP': { newLocation = [ userLocation[0] + move, userLocation[1] ]; break } + default: { newLocation = [ userLocation[0], userLocation[1] ] } } userLocation.replace(newLocation) From 24ceebe78b8371b9faddba9b99c33deae2f8c40e Mon Sep 17 00:00:00 2001 From: Almir Kadric Date: Tue, 9 Aug 2016 07:22:01 +0900 Subject: [PATCH 2/2] added randomness to the stationary updater interval --- src/models/user-location.js | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/models/user-location.js b/src/models/user-location.js index 19276fa..dc56a2b 100644 --- a/src/models/user-location.js +++ b/src/models/user-location.js @@ -80,13 +80,34 @@ userLocation.intercept(validateCoordinates) // after update userLocation.observe(() => updateXcodeLocation(userLocation)) -// periodically to prevent reversions -window.setInterval(() => { +// updated at random intervals to prevent reversion +let currentTimer = null +function scheduleUpdate() { + const randomWait = random(1000, 10000, true) if (!settings.stationaryUpdates.get()) { + if (currentTimer) { + window.clearTimeout(currentTimer) + currentTimer = null + } return } - updateXcodeLocation(userLocation) -}, 10000) + currentTimer = window.setTimeout(() => { + currentTimer = null + + if (!settings.stationaryUpdates.get()) { + return + } + + updateXcodeLocation(userLocation) + scheduleUpdate() + }, randomWait) +} + +// watch settings for updates +settings.stationaryUpdates.observe(() => scheduleUpdate()) + +// initial trigger +scheduleUpdate() export default userLocation