import Notifier from "./Notifier.js";
import Elem from "./Elem.js";
export default class Navigator{
constructor(container, options){
const navBox = new Elem("div")
.addClass("navigator")
.appendTo(container);
for(let i = 0; i < options.length; i++){
const option = options[i].split("-");
switch(option[0]){
case "home": navBox.append(this.homeButton()); break;
case "back": navBox.append(this.backButton(option[1])); break;
case "logout": navBox.append(this.logoutButton()); break;
case "viewMenu": navBox.append(this.viewMenuButton()); break;
case "addMenu": navBox.append(this.addMenuButton()); break;
}
}
}
homeButton(){
const homeSvg = '';
return new Elem("button")
.innerHtml(homeSvg)
.addClass("navButton")
.onclick(()=>{changePage("home")});
}
backButton(page){
const backSvg = '';
return new Elem("button")
.innerHtml(backSvg)
.addClass("navButton")
.onclick(()=>{changePage(page)});
}
logoutButton(){
const logoutSvg = '';
return new Elem("button")
.innerHtml(logoutSvg)
.addClass("navButton")
.onclick(this.logout);
}
viewMenuButton(){
const viewSvg = '';
return new Elem("button")
.innerHtml(viewSvg)
.addClass("navButton")
.onclick(()=>{changePage("viewMenu")});
}
addMenuButton(){
const addSvg = '';
return new Elem("button")
.innerHtml(addSvg)
.addClass("navButton")
.onclick(()=>{changePage("addMenu")});
}
async logout(){
let response;
try{
response = await fetch("/api/user/logout", {
method: "GET",
headers: {"Content-Type": "application/json"}
});
}catch(e){
new Notifier("error", "Something went wrong, try refreshing the page");
}
if(!response.ok) return new Notifier("error", response.error.message);
changePage("login");
}
}