"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.startSession = startSession;
exports.stopSession = stopSession;
function _os() {
const data = _interopRequireDefault(require("os"));
_os = function () {
return data;
};
return data;
}
function _ApiV() {
const data = _interopRequireDefault(require("./ApiV2"));
_ApiV = function () {
return data;
};
return data;
}
function _Config() {
const data = _interopRequireDefault(require("./Config"));
_Config = function () {
return data;
};
return data;
}
function _Logger() {
const data = _interopRequireDefault(require("./Logger"));
_Logger = function () {
return data;
};
return data;
}
function UrlUtils() {
const data = _interopRequireWildcard(require("./UrlUtils"));
UrlUtils = function () {
return data;
};
return data;
}
function _User() {
const data = _interopRequireDefault(require("./User"));
_User = function () {
return data;
};
return data;
}
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const UPDATE_FREQUENCY_SECS = 20;
let keepUpdating = true; // TODO notify www when a project is started, and every N seconds afterwards
async function startSession(projectRoot, exp, platform, forceUpdate = false) {
if (forceUpdate) {
keepUpdating = true;
}
if (!_Config().default.offline && keepUpdating) {
// TODO(anp) if the user has configured device ids, then notify for those too
let authSession = await _User().default.getSessionAsync();
if (!authSession) {
// NOTE(brentvatne) let's just bail out in this case for now
// throw new Error('development sessions can only be initiated for logged in users');
return;
}
try {
let url;
if (platform === 'native') {
url = await UrlUtils().constructManifestUrlAsync(projectRoot);
} else if (platform === 'web') {
url = await UrlUtils().constructWebAppUrlAsync(projectRoot);
} else {
throw new Error(`Unsupported platform: ${platform}`);
}
let apiClient = _ApiV().default.clientForUser(authSession);
await apiClient.postAsync('development-sessions/notify-alive', {
data: {
session: {
description: `${exp.name} on ${_os().default.hostname()}`,
hostname: _os().default.hostname(),
platform,
config: {
// TODO: if icons are specified, upload a url for them too so people can distinguish
description: exp.description,
name: exp.name,
slug: exp.slug,
primaryColor: exp.primaryColor
},
url,
source: 'desktop'
}
}
});
} catch (e) {
_Logger().default.global.debug(e, `Error updating dev session: ${e}`);
}
setTimeout(() => startSession(projectRoot, exp, platform), UPDATE_FREQUENCY_SECS * 1000);
}
}
function stopSession() {
keepUpdating = false;
}
//# sourceMappingURL=__sourcemaps__/DevSession.js.map