
Reduced time counter increment interval. Added badge service. Refactored user service. Replaced Google+ with People API.
95 lines
2.4 KiB
JavaScript
95 lines
2.4 KiB
JavaScript
import store from '../../store';
|
|
import githubHelper from './helpers/githubHelper';
|
|
import Provider from './common/Provider';
|
|
import utils from '../utils';
|
|
import userSvc from '../userSvc';
|
|
|
|
export default new Provider({
|
|
id: 'gist',
|
|
name: 'Gist',
|
|
getToken({ sub }) {
|
|
return store.getters['data/githubTokensBySub'][sub];
|
|
},
|
|
getLocationUrl({ gistId }) {
|
|
return `https://gist.github.com/${gistId}`;
|
|
},
|
|
getLocationDescription({ filename }) {
|
|
return filename;
|
|
},
|
|
async downloadContent(token, syncLocation) {
|
|
const content = await githubHelper.downloadGist({
|
|
...syncLocation,
|
|
token,
|
|
});
|
|
return Provider.parseContent(content, `${syncLocation.fileId}/content`);
|
|
},
|
|
async uploadContent(token, content, syncLocation) {
|
|
const file = store.state.file.itemsById[syncLocation.fileId];
|
|
const description = utils.sanitizeName(file && file.name);
|
|
const gist = await githubHelper.uploadGist({
|
|
...syncLocation,
|
|
token,
|
|
description,
|
|
content: Provider.serializeContent(content),
|
|
});
|
|
return {
|
|
...syncLocation,
|
|
gistId: gist.id,
|
|
};
|
|
},
|
|
async publish(token, html, metadata, publishLocation) {
|
|
const gist = await githubHelper.uploadGist({
|
|
...publishLocation,
|
|
token,
|
|
description: metadata.title,
|
|
content: html,
|
|
});
|
|
return {
|
|
...publishLocation,
|
|
gistId: gist.id,
|
|
};
|
|
},
|
|
makeLocation(token, filename, isPublic, gistId) {
|
|
return {
|
|
providerId: this.id,
|
|
sub: token.sub,
|
|
filename,
|
|
isPublic,
|
|
gistId,
|
|
};
|
|
},
|
|
async listFileRevisions({ token, syncLocation }) {
|
|
const entries = await githubHelper.getGistCommits({
|
|
...syncLocation,
|
|
token,
|
|
});
|
|
|
|
return entries.map((entry) => {
|
|
const sub = `${githubHelper.subPrefix}:${entry.user.id}`;
|
|
userSvc.addUserInfo({ id: sub, name: entry.user.login, imageUrl: entry.user.avatar_url });
|
|
return {
|
|
sub,
|
|
id: entry.version,
|
|
created: new Date(entry.committed_at).getTime(),
|
|
};
|
|
});
|
|
},
|
|
async loadFileRevision() {
|
|
// Revision are already loaded
|
|
return false;
|
|
},
|
|
async getFileRevisionContent({
|
|
token,
|
|
contentId,
|
|
syncLocation,
|
|
revisionId,
|
|
}) {
|
|
const data = await githubHelper.downloadGistRevision({
|
|
...syncLocation,
|
|
token,
|
|
sha: revisionId,
|
|
});
|
|
return Provider.parseContent(data, contentId);
|
|
},
|
|
});
|