43 lines
1.3 KiB
JavaScript
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
|
|
|
|
}) |