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() { function loadDocuments() {
let container = document.querySelector("#container"); let container = document.querySelector("#container");
let fileName = "voicemail-and-vacation-responder.pdf"; let fileName = "voicemail-and-vacation-responder.pdf";
factory.buildFileCard(fileName, container, true) factory.buildFileCard(fileName, container, true);
factory.buildDefaultWebCards(container) factory.buildDefaultWebCards(container);
} }
loadDocuments(); loadDocuments();

@ -10,18 +10,38 @@ export class Configurator {
getFileExtensionToImageMap(): Object { getFileExtensionToImageMap(): Object {
if (!fileExtensionToImage) { if (!fileExtensionToImage) {
fileExtensionToImage = this.loadConfigMap("file-extensions.json"); fileExtensionToImage = this.loadAppConfig("file-extensions.json");
} }
return fileExtensionToImage; return fileExtensionToImage;
}; };
loadConfigMap(fileName: string): object { loadAppConfig(fileName: string): object {
let filePath = this.fileutils.getPathToConfig(fileName); let filePath = this.fileutils.getPathToConfig(fileName);
let fileBuffer = fs.readFileSync(filePath); let fileBuffer = fs.readFileSync(filePath);
let content = fileBuffer.toString('utf8') let content = fileBuffer.toString('utf8')
return JSON.parse(content) 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 { 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')) { 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)); let model = new CardModel(getImagePathFromDocumentName(filePath), fileNameToPrettyString(filePath));
loadTemplateSingle("file-card.mustache", model, (content: string, id: string) => { loadTemplateSingle("file-card.mustache", model, (content: string, id: string) => {
let snip = $(content); let snip = $(content);
@ -38,7 +46,7 @@ export function buildFileCard(filePath: string, elem: Element, append: boolean =
} }
export function buildDefaultWebCards(elem: Element) { export function buildDefaultWebCards(elem: Element) {
let userPrefs = config.loadConfigMap("user.json"); let userPrefs = config.loadAppConfig("user.json");
let links = userPrefs['default-links']; let links = userPrefs['default-links'];
let $ = require('jquery') let $ = require('jquery')
for (let i = 0, l = links.length; i < l; i++) { 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')) { export function buildWebCard(urlText: string, elem: Element, append: boolean = false, $: any = require('jquery')) {
console.log("adding " + urlText)
let url = new URL(urlText); let url = new URL(urlText);
let favicon = WebUtils.getFaviconUrl(url); let favicon = WebUtils.getFaviconUrl(url);
let model = new CardModel(favicon, urlText); 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) => { $.get(url.toString(), (data, status) => {
try { try {
if ('success' === status) { if ('success' === status) {
console.log(`get ${url.toString()} was successful`);
resolve($(data).filter('title').text()); resolve($(data).filter('title').text());
} }
} catch (a) { } catch (a) {
console.error("Error while attempting to fetch page title", a) console.error("Error while attempting to fetch page title", a)
} }
}).fail((failure) => { }).fail((failure) => {
console.log(`get ${url.toString()} failed ${failure}`)
reject(failure); reject(failure);
}) })
}).then((value: string) => { }).then((value: string) => {
@ -104,7 +108,9 @@ function fileNameToPrettyString(fileName: string): string {
} }
function getImagePathFromDocumentName(name: 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) { function launchDocument(filename: string) {

Loading…
Cancel
Save