profile-pane
Version:
A SolidOS compatible pane to display a personal profile page
83 lines • 3.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadProfileForm = loadProfileForm;
exports.presentSocial = presentSocial;
var rdflib_1 = require("rdflib");
var solid_ui_1 = require("solid-ui");
var wrapped_profileFormText_1 = require("./editProfilePane/wrapped-profileFormText");
var DEFAULT_ICON_URI = solid_ui_1.icons.iconBase + 'noun_10636_grey.svg'; // grey disc
/* eslint-disable @typescript-eslint/no-explicit-any */
function loadProfileForm(store) {
var preferencesForm = store.sym('https://solidos.github.io/profile-pane/src/ontology/profileForm.ttl#this');
var preferencesFormDoc = preferencesForm.doc();
if (!store.holds(undefined, undefined, undefined, preferencesFormDoc)) {
// If not loaded already
(0, rdflib_1.parse)(wrapped_profileFormText_1.profileForm, store, preferencesFormDoc.uri, 'text/turtle', function () { return null; }); // Load form directly
}
}
function presentSocial(subject, store) {
function nameForAccount(subject) {
var acIcon = store.any(subject, solid_ui_1.ns.foaf('name')) ||
store.any(subject, solid_ui_1.ns.rdfs('label')); // on the account itself?
if (acIcon)
return acIcon.value;
var classes = store.each(subject, solid_ui_1.ns.rdf('type'));
for (var _i = 0, classes_1 = classes; _i < classes_1.length; _i++) {
var k = classes_1[_i];
var classIcon = store.any(k, solid_ui_1.ns.rdfs('label'));
if (classIcon) {
return classIcon.value;
}
return solid_ui_1.utils.label(k);
}
return '';
}
function iconForAccount(subject) {
var acIcon = store.any(subject, solid_ui_1.ns.foaf('icon')); // on the account itself?
if (acIcon)
return acIcon.value;
var classes = store.each(subject, solid_ui_1.ns.rdf('type'));
if (classes.length > 0) {
console.log('@@ classes[0].termType 2 ', classes[0].termType);
for (var _i = 0, _a = classes; _i < _a.length; _i++) {
var k = _a[_i];
var classIcon = store.any(k, solid_ui_1.ns.foaf('icon'));
if (classIcon !== null) {
return classIcon.value;
}
}
}
return DEFAULT_ICON_URI;
}
function homepageForAccount(subject) {
var acHomepage = store.any(subject, solid_ui_1.ns.foaf('homepage')); // on the account itself?
if (acHomepage)
return acHomepage.value;
var id = store.anyJS(subject, solid_ui_1.ns.foaf('accountName'), null, subject.doc()) || 'No_account_Name';
var classes = store.each(subject, solid_ui_1.ns.rdf('type'));
for (var _i = 0, classes_2 = classes; _i < classes_2.length; _i++) {
var k = classes_2[_i];
var userProfilePrefix = store.any(k, solid_ui_1.ns.foaf('userProfilePrefix'));
if (userProfilePrefix) {
return userProfilePrefix.value + id.trim();
}
}
return "no userProfilePrefix?";
}
function accountAsObject(ac) {
return {
name: nameForAccount(ac),
icon: iconForAccount(ac),
homepage: homepageForAccount(ac)
};
}
loadProfileForm(store); // get ontology info
var accountThings = store.anyJS(subject, solid_ui_1.ns.foaf('account')); // load the collection
if (!accountThings)
return { accounts: [] }; // could have been undefined
console.log('Social: accountThings', accountThings);
var accounts = accountThings.map(function (ac) { return accountAsObject(ac); });
console.log('Social: account objects', accounts);
return { accounts: accounts };
}
//# sourceMappingURL=SocialPresenter.js.map