recogito-client-core/src/Environment.js

43 lines
1.3 KiB
JavaScript

/**
* Difference between server time and client time, in milliseconds
*/
let serverTimeDifference = 0;
export default () => ({
/**
* A generic container for RecogitoJS/Annotorious
* to store globally available environment info. The
* most important piece of information is user auth
* info. Example:
*
* user: { id, displayName, email, avatarURL }
*
* id ........... the host application user ID (should be a URI, but could be username) REQUIRED
* displayName .. screen display or nickname OPTIONAL (id is used when empty)
* email ........ OPTIONAL
* avatarURL .... OPTIONAL + not supported at the moment
*/
/**
* Sets a server time, so we can correct browser time error.
* Note for the super-picky: client-server latency will introduce
* an error we don't account for.
*/
setServerTime: serverNow => {
const browserNow = Date.now()
serverTimeDifference = serverNow - browserNow;
},
/**
* Returns the current 'server time', i.e. browser time
* adjusted by the serverTimeDifference value.
*/
getCurrentTimeAdjusted: () =>
(new Date(Date.now() + serverTimeDifference)).toISOString(),
/** Re-adjusts the given server timestamp to browser time **/
toClientTime: serverTime =>
Date.parse(serverTime) - serverTimeDifference
})