implemented rudimentary read/save interface for user preferences

build-validation
David Tookey 5 years ago
parent 31da7be3de
commit 81a60ecb09

@ -1,3 +1,3 @@
{
"pdf": "pdf-icon.svg"
".pdf": "pdf-icon.svg"
}

@ -4,8 +4,9 @@ const factory = require(path.join(appDir, 'viewFactory'))
function loadDocuments() {
let container = document.querySelector("#container");
let fileName = "voicemail-and-vacation-responder.pdf";
factory.buildFileCard(fileName, container, true)
factory.buildDefaultWebCards(container)
factory.buildFileCard(fileName, container, true);
factory.buildDefaultWebCards(container);
}
loadDocuments();

@ -10,18 +10,38 @@ export class Configurator {
getFileExtensionToImageMap(): Object {
if (!fileExtensionToImage) {
fileExtensionToImage = this.loadConfigMap("file-extensions.json");
fileExtensionToImage = this.loadAppConfig("file-extensions.json");
}
return fileExtensionToImage;
};
loadConfigMap(fileName: string): object {
loadAppConfig(fileName: string): object {
let filePath = this.fileutils.getPathToConfig(fileName);
let fileBuffer = fs.readFileSync(filePath);
let content = fileBuffer.toString('utf8')
return JSON.parse(content)
}
loadUserConfig(fileName: string): object {
let userConfigPath = this.fileutils.getPathToUserDir(fileName);
if (!fs.existsSync(userConfigPath)) {
return {};
} else {
let content = fs.readFileSync(userConfigPath);
return JSON.parse(content);
}
}
saveUserConfig(fileName: string, obj: any) {
let userConfigPath = this.fileutils.getPathToUserDir(fileName);
let content = JSON.stringify(obj);
fs.writeFile(userConfigPath, content, (err) => {
if (err) {
console.log(err);
throw err;
}
});
}
}
@ -47,7 +67,20 @@ export class FileUtils {
}
getFileExtension(fileName: string): string {
return fileName.substr(fileName.lastIndexOf(".")+1)
return path.extname(fileName);
}
getPathToUserDir(fileName: string): string {
let dirPath = path.join(__dirname, "..", "user");
let filePath = path.join(dirPath, fileName);
this.touchDir(dirPath);
return filePath;
}
touchDir(dirPath: string) {
if (!fs.existsSync(dirPath)) {
fs.mkdirSync(dirPath);
}
}
}

@ -19,6 +19,14 @@ export class CardModel {
}
export function buildFileCard(filePath: string, elem: Element, append: boolean = false, $: any = require('jquery')) {
let conf = config.loadUserConfig("user.json");
console.log(conf);
let links = conf['links'];
if (!links) {
links = [];
}
links.push("www.fark.com");
config.saveUserConfig("user.json", conf);
let model = new CardModel(getImagePathFromDocumentName(filePath), fileNameToPrettyString(filePath));
loadTemplateSingle("file-card.mustache", model, (content: string, id: string) => {
let snip = $(content);
@ -38,7 +46,7 @@ export function buildFileCard(filePath: string, elem: Element, append: boolean =
}
export function buildDefaultWebCards(elem: Element) {
let userPrefs = config.loadConfigMap("user.json");
let userPrefs = config.loadAppConfig("user.json");
let links = userPrefs['default-links'];
let $ = require('jquery')
for (let i = 0, l = links.length; i < l; i++) {
@ -48,8 +56,6 @@ export function buildDefaultWebCards(elem: Element) {
}
export function buildWebCard(urlText: string, elem: Element, append: boolean = false, $: any = require('jquery')) {
console.log("adding " + urlText)
let url = new URL(urlText);
let favicon = WebUtils.getFaviconUrl(url);
let model = new CardModel(favicon, urlText);
@ -65,14 +71,12 @@ export function buildWebCard(urlText: string, elem: Element, append: boolean = f
$.get(url.toString(), (data, status) => {
try {
if ('success' === status) {
console.log(`get ${url.toString()} was successful`);
resolve($(data).filter('title').text());
}
} catch (a) {
console.error("Error while attempting to fetch page title", a)
}
}).fail((failure) => {
console.log(`get ${url.toString()} failed ${failure}`)
reject(failure);
})
}).then((value: string) => {
@ -104,7 +108,9 @@ function fileNameToPrettyString(fileName: string): string {
}
function getImagePathFromDocumentName(name: string): string {
return fu.getPathToImage(config.getFileExtensionToImageMap()[fu.getFileExtension(name)])
let ext = fu.getFileExtension(name);
let thumbnail = config.getFileExtensionToImageMap()[ext];
return fu.getPathToImage(thumbnail);
}
function launchDocument(filename: string) {

Loading…
Cancel
Save