73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
(function () {
|
|
var TOKEN_KEYS = ["token", "access_token", "accessToken"];
|
|
var APP_CODE_KEYS = ["app_code", "appCode"];
|
|
var USER_READY_EVENT = "hyapp:user-ready";
|
|
var USER_ERROR_EVENT = "hyapp:user-error";
|
|
|
|
function query() {
|
|
var params = new URLSearchParams(window.location.search);
|
|
var hash = window.location.hash || "";
|
|
if (hash.indexOf("?") >= 0) {
|
|
new URLSearchParams(hash.split("?").slice(1).join("?")).forEach(function (value, key) {
|
|
if (!params.has(key)) params.set(key, value);
|
|
});
|
|
}
|
|
return params;
|
|
}
|
|
|
|
function first(params, keys) {
|
|
for (var i = 0; i < keys.length; i += 1) {
|
|
var value = params.get(keys[i]);
|
|
if (value) return value;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
function parse() {
|
|
var params = query();
|
|
var token = first(params, TOKEN_KEYS);
|
|
var appCode = first(params, APP_CODE_KEYS) || window.localStorage.getItem("hyapp_app_code") || "lalu";
|
|
|
|
if (window.HyAppAPI) {
|
|
if (token) window.HyAppAPI.setAccessToken(token);
|
|
if (appCode) window.HyAppAPI.setAppCode(appCode);
|
|
}
|
|
|
|
return {
|
|
token: token || (window.HyAppAPI && window.HyAppAPI.getAccessToken ? window.HyAppAPI.getAccessToken() : ""),
|
|
app_code: appCode,
|
|
raw: params
|
|
};
|
|
}
|
|
|
|
function emit(name, detail) {
|
|
window.dispatchEvent(new CustomEvent(name, { detail: detail }));
|
|
}
|
|
|
|
function loadUser() {
|
|
var current = parse();
|
|
if (!current.token || !window.HyAppAPI) {
|
|
return Promise.resolve(null);
|
|
}
|
|
return window.HyAppAPI.get("/api/v1/users/me/overview").then(function (userInfo) {
|
|
current.user = userInfo;
|
|
window.HyAppParams.current = current;
|
|
emit(USER_READY_EVENT, current);
|
|
return current;
|
|
}).catch(function (error) {
|
|
current.error = error;
|
|
window.HyAppParams.current = current;
|
|
emit(USER_ERROR_EVENT, current);
|
|
throw error;
|
|
});
|
|
}
|
|
|
|
window.HyAppParams = {
|
|
parse: parse,
|
|
loadUser: loadUser,
|
|
current: parse(),
|
|
USER_READY_EVENT: USER_READY_EVENT,
|
|
USER_ERROR_EVENT: USER_ERROR_EVENT
|
|
};
|
|
})();
|