37 lines
No EOL
1 KiB
Svelte
37 lines
No EOL
1 KiB
Svelte
<svelte:options runes={true} />
|
|
|
|
<script lang="ts">
|
|
import {onMount} from "svelte";
|
|
import {goto} from "$app/navigation";
|
|
import {AlbumState} from "$lib/components/custom/Views/album-pages-utils.svelte";
|
|
import AlbumComponent from "$lib/components/custom/Views/AlbumComponent.svelte";
|
|
|
|
let scrollY = $state(0);
|
|
let scrollYMax = $state(1);
|
|
let albums: AlbumState = $state(new AlbumState());
|
|
albums.setMode("starred")
|
|
|
|
function updateScroll(self) {
|
|
scrollY = self.scrollTop;
|
|
scrollYMax = self.scrollTopMax;
|
|
}
|
|
|
|
$effect(() => {
|
|
if(scrollY/scrollYMax > 0.7 && albums.length === 100 && !albums.paginating) {
|
|
console.log("triggered")
|
|
albums.paginating = true;
|
|
albums.fetchAlbums();
|
|
}
|
|
})
|
|
|
|
function selectAlbum(albumId) {
|
|
goto(`/album/${albumId}`);
|
|
console.log(albumId);
|
|
}
|
|
|
|
onMount(() => {
|
|
albums.fetchAlbums();
|
|
})
|
|
</script>
|
|
|
|
<AlbumComponent {albums} {updateScroll} {selectAlbum} /> |