list admin actions
This commit is contained in:
		
							parent
							
								
									c148bc7586
								
							
						
					
					
						commit
						00aac119f1
					
				
					 3 changed files with 50 additions and 4 deletions
				
			
		|  | @ -39,7 +39,10 @@ | ||||||
|           >{list["name"]}</Link |           >{list["name"]}</Link | ||||||
|         ><br /> |         ><br /> | ||||||
|       {/each} |       {/each} | ||||||
|       <Link class="text-blue-400" to="/lists/create">Create new list</Link> |       <Link | ||||||
|  |         class="text-blue-400 dark:bg-gray-600 bg-gray-400 border p-1 mt-4 rounded" | ||||||
|  |         to="/lists/create">Create new list</Link | ||||||
|  |       > | ||||||
|     {/await} |     {/await} | ||||||
|   </div> |   </div> | ||||||
| </main> | </main> | ||||||
|  |  | ||||||
|  | @ -27,6 +27,8 @@ | ||||||
|           let permissions = [ |           let permissions = [ | ||||||
|             Permission.read(Role.user(loggedInUser["$id"])), |             Permission.read(Role.user(loggedInUser["$id"])), | ||||||
|             Permission.read(Role.team(r["$id"])), |             Permission.read(Role.team(r["$id"])), | ||||||
|  |             Permission.write(Role.team(r["$id"], 'owner')), | ||||||
|  |             Permission.delete(Role.team(r["$id"], 'owner')) | ||||||
|           ]; |           ]; | ||||||
| 
 | 
 | ||||||
|           if (requireLoggedIn == false) { |           if (requireLoggedIn == false) { | ||||||
|  |  | ||||||
|  | @ -1,8 +1,9 @@ | ||||||
| <script> | <script> | ||||||
|   import { ID, Permission, Query, Role } from "appwrite"; |   import { ID, Permission, Query, Role } from "appwrite"; | ||||||
|   import Header from "../../lib/Header.svelte"; |   import Header from "../../lib/Header.svelte"; | ||||||
|   import { database, loggedInUser } from "../../lib/appwrite"; |   import { database, loggedInUser, teams } from "../../lib/appwrite"; | ||||||
|   import { Link } from "svelte-navigator"; |   import { Link } from "svelte-navigator"; | ||||||
|  |   import { navigate } from "svelte-navigator/src/history"; | ||||||
| 
 | 
 | ||||||
|   export let id; |   export let id; | ||||||
| 
 | 
 | ||||||
|  | @ -14,6 +15,16 @@ | ||||||
|       perakim = r.documents; |       perakim = r.documents; | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  |   let teamDetails = teams.listMemberships(id); | ||||||
|  | 
 | ||||||
|  |   const userIsAdmin = (users, id) => { | ||||||
|  |     let index = users.memberships.findIndex((e) => e.userId == id); | ||||||
|  |     if (users.memberships[index].roles.includes("owner")) { | ||||||
|  |       return true; | ||||||
|  |     } | ||||||
|  |     return false; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|   const perekIndex = (i) => { |   const perekIndex = (i) => { | ||||||
|     let index = perakim.findIndex((e) => e.perek == i); |     let index = perakim.findIndex((e) => e.perek == i); | ||||||
|     return index; |     return index; | ||||||
|  | @ -33,7 +44,7 @@ | ||||||
|           perek: perek, |           perek: perek, | ||||||
|           taken: true, |           taken: true, | ||||||
|           taken_by: loggedInUser["$id"], |           taken_by: loggedInUser["$id"], | ||||||
|           taken_by_name: loggedInUser['name'] |           taken_by_name: loggedInUser["name"], | ||||||
|         }, |         }, | ||||||
|         [ |         [ | ||||||
|           Permission.read(Role.team(id)), |           Permission.read(Role.team(id)), | ||||||
|  | @ -51,6 +62,26 @@ | ||||||
|       }); |       }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   function renameList() { | ||||||
|  |     let newTitle = prompt("Enter new name"); | ||||||
|  | 
 | ||||||
|  |     if (newTitle !== "") { | ||||||
|  |       database | ||||||
|  |         .updateDocument("tehillim-split", "lists", id, { | ||||||
|  |           title: newTitle, | ||||||
|  |         }) | ||||||
|  |         .then( | ||||||
|  |           () => (list = database.getDocument("tehillim-split", "lists", id)), | ||||||
|  |         ); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   function deleteList() { | ||||||
|  |     database | ||||||
|  |       .deleteDocument("tehillim-split", "lists", id) | ||||||
|  |       .then(() => teams.delete(id).then(() => navigate("/", {}))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   function completePerek(perek) { |   function completePerek(perek) { | ||||||
|     let perekDBId = perakim[perekIndex(perek)]["$id"]; |     let perekDBId = perakim[perekIndex(perek)]["$id"]; | ||||||
| 
 | 
 | ||||||
|  | @ -112,7 +143,17 @@ | ||||||
|     {:then list} |     {:then list} | ||||||
|       <h1 class="text-2xl">List {list.title}</h1> |       <h1 class="text-2xl">List {list.title}</h1> | ||||||
|       <br /> |       <br /> | ||||||
|       <Link class="text-blue-400" to="/list/{id}/members">Members</Link><br /> |       <Link class="text-blue-400" to="/list/{id}/members">Members</Link> | ||||||
|  |       {#await teamDetails then team} | ||||||
|  |         {#if userIsAdmin(team, loggedInUser["$id"])} | ||||||
|  |           | <Link class="text-blue-400" to="#" on:click={() => renameList()} | ||||||
|  |             >Rename list</Link | ||||||
|  |           > | ||||||
|  |           | <Link class="text-blue-400" to="#" on:click={() => deleteList()} | ||||||
|  |             >Delete list</Link | ||||||
|  |           > | ||||||
|  |         {/if} | ||||||
|  |       {/await}<br /> | ||||||
|       {#await perakimPromise then perakimResolved} |       {#await perakimPromise then perakimResolved} | ||||||
|         {#each Array.from(Array(150 + 1).keys()).slice(1) as i} |         {#each Array.from(Array(150 + 1).keys()).slice(1) as i} | ||||||
|           {#if perekIndex(i) !== -1} |           {#if perekIndex(i) !== -1} | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue