mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	feat (server, web): Share with partner (#2388)
* feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| <script lang="ts"> | ||||
| 	import { onMount } from 'svelte'; | ||||
| 	import { onDestroy, onMount } from 'svelte'; | ||||
|  | ||||
| 	import { UserResponseDto } from '@api'; | ||||
| 	import IntersectionObserver from '../asset-viewer/intersection-observer.svelte'; | ||||
| 	import { assetGridState, assetStore, loadingBucketState } from '$lib/stores/assets.store'; | ||||
| 	import { api, AssetCountByTimeBucketResponseDto, AssetResponseDto, TimeGroupEnum } from '@api'; | ||||
| @@ -17,6 +18,7 @@ | ||||
| 		OnScrollbarDragDetail | ||||
| 	} from '../shared-components/scrollbar/scrollbar.svelte'; | ||||
|  | ||||
| 	export let user: UserResponseDto | undefined = undefined; | ||||
| 	export let isAlbumSelectionMode = false; | ||||
|  | ||||
| 	let viewportHeight = 0; | ||||
| @@ -26,11 +28,12 @@ | ||||
|  | ||||
| 	onMount(async () => { | ||||
| 		const { data: assetCountByTimebucket } = await api.assetApi.getAssetCountByTimeBucket({ | ||||
| 			timeGroup: TimeGroupEnum.Month | ||||
| 			timeGroup: TimeGroupEnum.Month, | ||||
| 			userId: user?.id | ||||
| 		}); | ||||
| 		bucketInfo = assetCountByTimebucket; | ||||
|  | ||||
| 		assetStore.setInitialState(viewportHeight, viewportWidth, assetCountByTimebucket); | ||||
| 		assetStore.setInitialState(viewportHeight, viewportWidth, assetCountByTimebucket, user?.id); | ||||
|  | ||||
| 		// Get asset bucket if bucket height is smaller than viewport height | ||||
| 		let bucketsToFetchInitially: string[] = []; | ||||
| @@ -50,6 +53,10 @@ | ||||
| 		}); | ||||
| 	}); | ||||
|  | ||||
| 	onDestroy(() => { | ||||
| 		assetStore.setInitialState(0, 0, { totalCount: 0, buckets: [] }, undefined); | ||||
| 	}); | ||||
|  | ||||
| 	function intersectedHandler(event: CustomEvent) { | ||||
| 		const el = event.detail as HTMLElement; | ||||
| 		const target = el.firstChild as HTMLElement; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user