public/scripts/utils.js (50 lines of code) (raw):
function parseUrl(href) {
var anchor = document.createElement('a');
anchor.href = href;
return anchor;
}
function authCallback(resolve, auth) {
var apiExists = auth && typeof auth.api !== 'undefined';
var tokenExists = auth && typeof auth.token !== 'undefined';
resolve({ authorized: apiExists && tokenExists });
}
function authError(t, error) {
throw t.NotHandled('error occurred while getting authorization status from Trello', error);
}
function setAuthToken(t, api, token) {
return t.set('member', 'private', 'auth', {
api: api,
token: token
});
}
function getAuthToken(t) {
return t.get('member', 'private', 'auth');
}
function getAuthorizationStatus(t) {
return new TrelloPowerUp.Promise(function authPromise(resolve) {
getAuthToken(t)
.then(authCallback.bind(this, resolve))
.catch(authError.bind(this, t));
});
}
function isUrlGitLab(url) {
return parseUrl(url).hostname === 'gitlab.com';
}
function isAttachmentGitLabMergeRequest(attachment) {
var url = attachment.url;
var isMergeRequest = url.match(/\/merge_requests\/\d+$/m);
return isUrlGitLab(url) && isMergeRequest;
}
function sizeContainer() {
var t = TrelloPowerUp.iframe();
return t.sizeTo('#content');
}
window.utils = {
parseUrl: parseUrl,
getAuthorizationStatus: getAuthorizationStatus,
isUrlGitLab: isUrlGitLab,
isAttachmentGitLabMergeRequest: isAttachmentGitLabMergeRequest,
sizeContainer: sizeContainer,
setAuthToken: setAuthToken,
getAuthToken: getAuthToken
};