| 
							
							
							
						 |  |  | @@ -1,35 +1,29 @@ | 
		
	
		
			
				|  |  |  |  | import fetch from "node-fetch"; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const BASE_URL = __APIURL__ || window.location.origin; | 
		
	
		
			
				|  |  |  |  | const BASE_URL = window.location.origin; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const statistics = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/purchase/statistics", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/purchase/statistics") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const colorStatistics = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/purchase/statistics/color", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/purchase/statistics/color") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const highscoreStatistics = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/highscore/statistics", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/highscore/statistics") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const overallWineStatistics = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/wines/statistics/overall", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/wines/statistics/overall") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const allRequestedWines = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/request/all", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href) | 
		
	
		
			
				|  |  |  |  | const allRequestedWines = () => {; | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/request/all") | 
		
	
		
			
				|  |  |  |  |     .then(resp => { | 
		
	
		
			
				|  |  |  |  |       const isAdmin = resp.headers.get("vinlottis-admin") == "true"; | 
		
	
		
			
				|  |  |  |  |       return Promise.all([resp.json(), isAdmin]); | 
		
	
	
		
			
				
					
					|  |  |  | @@ -37,26 +31,21 @@ const allRequestedWines = () => { | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const chartWinsByColor = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/purchase/statistics/color", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/purchase/statistics/color") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const chartPurchaseByColor = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/purchase/statistics", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/purchase/statistics") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const prelottery = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/wines/prelottery", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/wines/prelottery") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const sendLottery = sendObject => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/lottery", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -65,12 +54,11 @@ const sendLottery = sendObject => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify(sendObject) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/lottery", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const sendLotteryWinners = sendObject => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/lottery/winners", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -79,12 +67,11 @@ const sendLotteryWinners = sendObject => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify(sendObject) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/lottery/winners", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const addAttendee = sendObject => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/attendee/add", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -93,37 +80,31 @@ const addAttendee = sendObject => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify(sendObject) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/attendee/add", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const getVirtualWinner = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/winner/draw", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/winner/draw") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const attendeesSecure = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/attendee/all/secure", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/attendee/all/secure") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const winnersSecure = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/winner/all/secure", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/winner/all/secure") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const winners = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/winner/all", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/winner/all") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const deleteRequestedWine = wineToBeDeleted => { | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const url = new URL("api/request/"+ wineToBeDeleted.id, BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -132,12 +113,11 @@ const deleteRequestedWine = wineToBeDeleted => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify(wineToBeDeleted) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()) | 
		
	
		
			
				|  |  |  |  |   return fetch("api/request/" + wineToBeDeleted.id, options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const deleteWinners = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/winner/all", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -145,12 +125,11 @@ const deleteWinners = () => { | 
		
	
		
			
				|  |  |  |  |     method: "DELETE" | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/winner/all", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const deleteAttendees = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/attendee/all", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -158,13 +137,13 @@ const deleteAttendees = () => { | 
		
	
		
			
				|  |  |  |  |     method: "DELETE" | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/attendee/all", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const attendees = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/attendee/all", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/attendee/all") | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const requestNewWine = (wine) => { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -179,14 +158,11 @@ const requestNewWine = (wine) => { | 
		
	
		
			
				|  |  |  |  |     method: "post" | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/request/new-wine", BASE_URL) | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()) | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/request/new-wine", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()) | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const logWines = wines => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/log/wines", BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -195,7 +171,8 @@ const logWines = wines => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify(wines) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/log/wines", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const wineSchema = () => { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -205,31 +182,29 @@ const wineSchema = () => { | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const barcodeToVinmonopolet = id => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/wineinfo/" + id, BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(async resp => { | 
		
	
		
			
				|  |  |  |  |     if (!resp.ok) { | 
		
	
		
			
				|  |  |  |  |       if (resp.status == 404) { | 
		
	
		
			
				|  |  |  |  |         throw await resp.json(); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/wineinfo/") | 
		
	
		
			
				|  |  |  |  |     .then(async resp => { | 
		
	
		
			
				|  |  |  |  |       if (!resp.ok) { | 
		
	
		
			
				|  |  |  |  |         if (resp.status == 404) { | 
		
	
		
			
				|  |  |  |  |           throw await resp.json(); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  |         return resp.json(); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }); | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const searchForWine = searchString => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/wineinfo/search?query=" + searchString, BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(async resp => { | 
		
	
		
			
				|  |  |  |  |     if (!resp.ok) { | 
		
	
		
			
				|  |  |  |  |       if (resp.status == 404) { | 
		
	
		
			
				|  |  |  |  |         throw await resp.json(); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/wineinfo/search?query=" + searchString) | 
		
	
		
			
				|  |  |  |  |     .then(async resp => { | 
		
	
		
			
				|  |  |  |  |       if (!resp.ok) { | 
		
	
		
			
				|  |  |  |  |         if (resp.status == 404) { | 
		
	
		
			
				|  |  |  |  |           throw await resp.json(); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  |         return resp.json(); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }); | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |  | 
		
	
	
		
			
				
					
					|  |  |  | @@ -243,7 +218,6 @@ const handleErrors = async resp => { | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const login = (username, password) => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/login", BASE_URL); | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -252,17 +226,17 @@ const login = (username, password) => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify({ username, password }) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => { | 
		
	
		
			
				|  |  |  |  |     if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/login", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => { | 
		
	
		
			
				|  |  |  |  |       if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |         return resp.json(); | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  |         return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const register = (username, password) => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/register", BASE_URL); | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -271,13 +245,14 @@ const register = (username, password) => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify({ username, password }) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => { | 
		
	
		
			
				|  |  |  |  |     if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/register", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => { | 
		
	
		
			
				|  |  |  |  |       if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |         return resp.json(); | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  |         return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const getChatHistory = (page=1, limit=10) => { | 
		
	
	
		
			
				
					
					|  |  |  | @@ -285,25 +260,25 @@ const getChatHistory = (page=1, limit=10) => { | 
		
	
		
			
				|  |  |  |  |   if (!isNaN(page)) url.searchParams.append("page", page); | 
		
	
		
			
				|  |  |  |  |   if (!isNaN(limit)) url.searchParams.append("limit", limit); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const finishedDraw = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL("/api/virtual/finish", BASE_URL); | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     method: 'POST' | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch("/api/virtual/finish", options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const getAmIWinner = id => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL(`/api/winner/${id}`, BASE_URL); | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  |   return fetch(`/api/winner/${id}`) | 
		
	
		
			
				|  |  |  |  |     .then(resp => resp.json()); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const postWineChosen = (id, wineName) => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL(`/api/winner/${id}`, BASE_URL); | 
		
	
		
			
				|  |  |  |  |   const options = { | 
		
	
		
			
				|  |  |  |  |     headers: { | 
		
	
		
			
				|  |  |  |  |       "Content-Type": "application/json" | 
		
	
	
		
			
				
					
					|  |  |  | @@ -312,50 +287,49 @@ const postWineChosen = (id, wineName) => { | 
		
	
		
			
				|  |  |  |  |     body: JSON.stringify({ wineName: wineName }) | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href, options).then(resp => { | 
		
	
		
			
				|  |  |  |  |     if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }); | 
		
	
		
			
				|  |  |  |  |   return fetch(`/api/winner/${id}`, options) | 
		
	
		
			
				|  |  |  |  |     .then(resp => { | 
		
	
		
			
				|  |  |  |  |       if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |         return resp.json(); | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  |         return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | }; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const historyAll = () => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL(`/api/lottery/all`, BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => { | 
		
	
		
			
				|  |  |  |  |     if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }); | 
		
	
		
			
				|  |  |  |  |   return fetch(`/api/lottery/all`) | 
		
	
		
			
				|  |  |  |  |     .then(resp => { | 
		
	
		
			
				|  |  |  |  |       if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |         return resp.json(); | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  |         return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const historyByDate = (date) => { | 
		
	
		
			
				|  |  |  |  |   const url = new URL(`/api/lottery/by-date/${ date }`, BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => { | 
		
	
		
			
				|  |  |  |  |     if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |     } else { | 
		
	
		
			
				|  |  |  |  |       return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   }); | 
		
	
		
			
				|  |  |  |  |   return fetch(`/api/lottery/by-date/${ date }`) | 
		
	
		
			
				|  |  |  |  |     .then(resp => { | 
		
	
		
			
				|  |  |  |  |       if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |         return resp.json(); | 
		
	
		
			
				|  |  |  |  |       } else { | 
		
	
		
			
				|  |  |  |  |         return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |     }); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | const getWinnerByName = (name) => { | 
		
	
		
			
				|  |  |  |  |   const encodedName = encodeURIComponent(name) | 
		
	
		
			
				|  |  |  |  |   const url = new URL(`/api/lottery/by-name/${name}`, BASE_URL); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |   return fetch(url.href).then(resp => { | 
		
	
		
			
				|  |  |  |  |    if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |     return resp.json(); | 
		
	
		
			
				|  |  |  |  |    } else { | 
		
	
		
			
				|  |  |  |  |     return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |    } | 
		
	
		
			
				|  |  |  |  |   }) | 
		
	
		
			
				|  |  |  |  |   return fetch(`/api/lottery/by-name/${name}`) | 
		
	
		
			
				|  |  |  |  |     .then(resp => { | 
		
	
		
			
				|  |  |  |  |      if (resp.ok) { | 
		
	
		
			
				|  |  |  |  |       return resp.json(); | 
		
	
		
			
				|  |  |  |  |      } else { | 
		
	
		
			
				|  |  |  |  |       return handleErrors(resp); | 
		
	
		
			
				|  |  |  |  |      } | 
		
	
		
			
				|  |  |  |  |     }) | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | export { | 
		
	
	
		
			
				
					
					|  |  |  |   |