API - SubmitWeeklyReport & getUserProjects added
This commit is contained in:
		
							parent
							
								
									d6d4eb3336
								
							
						
					
					
						commit
						8d0da111eb
					
				
					 1 changed files with 55 additions and 2 deletions
				
			
		|  | @ -1,5 +1,6 @@ | ||||||
| import { NewProject, Project } from "../Types/Project"; | import { NewProject, Project } from "../Types/Project"; | ||||||
| import { NewUser, User } from "../Types/Users"; | import { NewUser, User } from "../Types/Users"; | ||||||
|  | import { NewWeeklyReport } from "../Types/goTypes"; | ||||||
| 
 | 
 | ||||||
| // This type of pattern should be hard to misuse
 | // This type of pattern should be hard to misuse
 | ||||||
| interface APIResponse<T> { | interface APIResponse<T> { | ||||||
|  | @ -20,8 +21,13 @@ interface API { | ||||||
|     project: NewProject, |     project: NewProject, | ||||||
|     token: string, |     token: string, | ||||||
|   ): Promise<APIResponse<Project>>; |   ): Promise<APIResponse<Project>>; | ||||||
|  |   /** Submit a weekly report */ | ||||||
|  |   submitWeeklyReport(project: NewWeeklyReport, token: string): Promise<APIResponse<Project>>; | ||||||
|   /** Renew the token */ |   /** Renew the token */ | ||||||
|   renewToken(token: string): Promise<APIResponse<string>>; |   renewToken(token: string): Promise<APIResponse<string>>; | ||||||
|  |   /** Gets all the projects of a user*/ | ||||||
|  |   getUserProjects(username: string, token: string): Promise<APIResponse<Project[]>>; | ||||||
|  |    | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Export an instance of the API
 | // Export an instance of the API
 | ||||||
|  | @ -49,7 +55,7 @@ export const api: API = { | ||||||
| 
 | 
 | ||||||
|   async removeUser( |   async removeUser( | ||||||
|     username: string, |     username: string, | ||||||
|     token: string, |     token: string | ||||||
|   ): Promise<APIResponse<User>> { |   ): Promise<APIResponse<User>> { | ||||||
|     try { |     try { | ||||||
|       const response = await fetch("/api/userdelete", { |       const response = await fetch("/api/userdelete", { | ||||||
|  | @ -74,7 +80,7 @@ export const api: API = { | ||||||
| 
 | 
 | ||||||
|   async createProject( |   async createProject( | ||||||
|     project: NewProject, |     project: NewProject, | ||||||
|     token: string, |     token: string | ||||||
|   ): Promise<APIResponse<Project>> { |   ): Promise<APIResponse<Project>> { | ||||||
|     try { |     try { | ||||||
|       const response = await fetch("/api/project", { |       const response = await fetch("/api/project", { | ||||||
|  | @ -117,4 +123,51 @@ export const api: API = { | ||||||
|       return { success: false, message: "Failed to renew token" }; |       return { success: false, message: "Failed to renew token" }; | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|  | 
 | ||||||
|  |   async getUserProjects(token: string): Promise<APIResponse<Project[]>> { | ||||||
|  |     try { | ||||||
|  |       const response = await fetch("/api/getUserProjects", { | ||||||
|  |         method: "GET", | ||||||
|  |         headers: { | ||||||
|  |           "Content-Type": "application/json", | ||||||
|  |           Authorization: "Bearer " + token, | ||||||
|  |         }, | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |       if (!response.ok) { | ||||||
|  |         return Promise.resolve({ success: false, message: "Failed to get user projects" }); | ||||||
|  |       } else { | ||||||
|  |         const data = (await response.json()) as Project[]; | ||||||
|  |         return Promise.resolve({ success: true, data }); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     catch (e) { | ||||||
|  |       return Promise.resolve({ success: false, message: "Failed to get user projects" }); | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |    | ||||||
|  |   submitWeeklyReport: function (project: NewWeeklyReport, token: string): Promise<APIResponse<Project>> { | ||||||
|  |     try { | ||||||
|  |       return fetch("/api/submitWeeklyReport", { | ||||||
|  |         method: "POST", | ||||||
|  |         headers: { | ||||||
|  |           "Content-Type": "application/json", | ||||||
|  |           Authorization: "Bearer " + token, | ||||||
|  |         }, | ||||||
|  |         body: JSON.stringify(project), | ||||||
|  |       }) | ||||||
|  |         .then((response) => { | ||||||
|  |           if (!response.ok) { | ||||||
|  |             return { success: false, message: "Failed to submit weekly report" }; | ||||||
|  |           } else { | ||||||
|  |             return response.json(); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |         .then((data) => { | ||||||
|  |           return { success: true, data }; | ||||||
|  |         }); | ||||||
|  |     } catch (e) { | ||||||
|  |       return Promise.resolve({ success: false, message: "Failed to submit weekly report" }); | ||||||
|  |     } | ||||||
|  |   } | ||||||
| }; | }; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 al8763be
						al8763be