Register page now uses api functions and can scan from vinmonopolet qr codes. Re-did formatting and styling on page.
This commit is contained in:
		
							
								
								
									
										160
									
								
								src/api.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								src/api.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,160 @@ | ||||
| const BASE_URL = __APIURL__ || "http://localhost:30030/"; | ||||
|  | ||||
| const statistics = () => { | ||||
|   const url = new URL('/api/purchase/statistics', BASE_URL) | ||||
|  | ||||
|   return fetch(url.href) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
| const colorStatistics = () => { | ||||
|   const url = new URL("/api/purchase/statistics/color", BASE_URL) | ||||
|  | ||||
|   return fetch(url.href) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
| const highscoreStatistics = () => { | ||||
|   const url = new URL("/api/highscore/statistics", BASE_URL) | ||||
|  | ||||
|   return fetch(url.href) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
| const overallWineStatistics = () => { | ||||
|   const url = new URL("/api/wines/statistics/overall", BASE_URL) | ||||
|  | ||||
|   return fetch(url.href) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
|  | ||||
| const prelottery = () => { | ||||
|   const url = new URL("/api/wines/prelottery", BASE_URL) | ||||
|  | ||||
|   return fetch(url.href) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
| const log = (sendObject) => { | ||||
|   const url = new URL("/api/log", BASE_URL) | ||||
|  | ||||
|   const options = { | ||||
|     headers: { | ||||
|       "Content-Type": "application/json" | ||||
|     }, | ||||
|     method: "POST", | ||||
|     body: JSON.stringify(sendObject) | ||||
|   }  | ||||
|  | ||||
|   return fetch(url.href, options) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
| const logWines = (wines) => { | ||||
|   const url = new URL("/api/log/wines", BASE_URL) | ||||
|  | ||||
|   const options = { | ||||
|     headers: { | ||||
|       "Content-Type": "application/json" | ||||
|     }, | ||||
|     method: "POST", | ||||
|     body: JSON.stringify(wines) | ||||
|   } | ||||
|  | ||||
|   return fetch(url.href, options) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
| const wineSchema = () => { | ||||
|   const url = new URL("/api/log/schema", BASE_URL) | ||||
|  | ||||
|   return fetch(url.href) | ||||
|     .then(resp => resp.json()) | ||||
| } | ||||
|  | ||||
| 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() | ||||
|         } | ||||
|       } else { | ||||
|         return resp.json() | ||||
|       } | ||||
|     }) | ||||
| } | ||||
|  | ||||
| const handleErrors = async (resp) => { | ||||
|   if ([400, 409].includes(resp.status)) { | ||||
|     throw await resp.json() | ||||
|   } else { | ||||
|     console.error("Unexpected error occured when login/register user:", resp) | ||||
|     throw await resp.json() | ||||
|   } | ||||
| } | ||||
|  | ||||
| const login = (username, password) => { | ||||
|   const url = new URL("/login", BASE_URL) | ||||
|   const options = { | ||||
|     headers: { | ||||
|       "Content-Type": "application/json" | ||||
|     }, | ||||
|     method: "POST", | ||||
|     redirect: "follow", | ||||
|     body: JSON.stringify({ username, password }) | ||||
|   } | ||||
|  | ||||
|   return fetch(url.href, options) | ||||
|     .then(resp => { | ||||
|       if (resp.ok) {         | ||||
|         if (resp.bodyUsed) | ||||
|           return resp.json() | ||||
|         else | ||||
|           return resp | ||||
|       } else { | ||||
|         return handleErrors(resp) | ||||
|       } | ||||
|     }) | ||||
| } | ||||
|  | ||||
| const register = (username, password) => { | ||||
|   const url = new URL("/register", BASE_URL) | ||||
|   const options = { | ||||
|     headers: { | ||||
|       "Content-Type": "application/json" | ||||
|     }, | ||||
|     method: "POST", | ||||
|     redirect: 'follow', | ||||
|     body: JSON.stringify({ username, password }) | ||||
|   } | ||||
|  | ||||
|   return fetch(url.href, options) | ||||
|     .then(resp => { | ||||
|       if (resp.ok) { | ||||
|         if (resp.bodyUsed) | ||||
|           return resp.json() | ||||
|         else | ||||
|           return resp | ||||
|       } else { | ||||
|         return handleErrors(resp) | ||||
|       } | ||||
|     }) | ||||
| } | ||||
|  | ||||
| export { | ||||
|   statistics, | ||||
|   colorStatistics, | ||||
|   highscoreStatistics, | ||||
|   overallWineStatistics, | ||||
|   prelottery, | ||||
|   log, | ||||
|   logWines, | ||||
|   wineSchema, | ||||
|   barcodeToVinmonopolet, | ||||
|   login, | ||||
|   register | ||||
| } | ||||
		Reference in New Issue
	
	Block a user