Skip to content

Commit

Permalink
refactor: Move InfiniteScrolling to composable
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisToxz committed Jul 19, 2023
1 parent 782a1fd commit 5863075
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 41 deletions.
1 change: 1 addition & 0 deletions resources/js/Components/Edit/EditSlipModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const updateSlip = () => {
)
}
const closeModal = () => {
// form.reset()
emit('close')
Expand Down
2 changes: 0 additions & 2 deletions resources/js/Components/Slip/ShowSlipModal.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<script setup>
import Hls from 'hls.js'
import plyr from 'plyr'
import useCanvas from '@/Composables/useCanvas.js'
import 'plyr/dist/plyr.css'
import {isRef, onMounted, ref} from 'vue'
Expand All @@ -12,7 +11,6 @@ const props = defineProps({
const video = ref(null)
const src = ref(props.slip.mediable.path)
const defaultOptions = {
autoplay: true,
//TODO: Remove before release
Expand Down
32 changes: 19 additions & 13 deletions resources/js/Composables/useInfiniteScrolling.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import axios from 'axios'
import {onMounted} from 'vue'
import {onMounted, onUnmounted, ref} from 'vue'

const useInfiniteScrolling = () => {

const isFetching = ref(false)
const loadMoreIntersect = ref(null)
export const useInfiniteScrolling = (slips) => {
const fetchSlips = async () => {
const next_url = slips.value.next_page_url

Expand All @@ -16,18 +19,21 @@ const useInfiniteScrolling = () => {
isFetching.value = false
})
}
onMounted(() => {
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
fetchSlips()
}
})
}, {
rootMargin: '-100px 0px 0px 0px',

const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) {
fetchSlips()
}
})
observer.observe(loadMoreIntersect.value)
}, {
rootMargin: '-100px 0px 0px 0px',
})
onMounted(() => observer.observe(loadMoreIntersect.value))

onUnmounted(() => observer.disconnect())

return {loadMoreIntersect, isFetching}
}

export default useInfiniteScrolling

3 changes: 1 addition & 2 deletions resources/js/Layouts/MainLayout.vue
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import {ref} from 'vue'
import NavItem from '@/Components/Reusable/NavItem.vue'
import ApplicationLogo from '@/Components/Reusable/ApplicationLogo.vue'
import UploadModal from '@/Components/Upload/UploadModal.vue'
import SettingsModal from '@/Components/Settings/SettingsModal.vue'
import {Vue3Snackbar} from 'vue3-snackbar'
let showUploadModal = ref(false)
Expand Down Expand Up @@ -38,7 +37,7 @@ let showSettingsModal = ref(false)
</div>
<UploadModal v-if="showUploadModal" @close="showUploadModal = false" />
<transition name="modal">
<SettingsModal v-if="showSettingsModal" @close="showSettingsModal = false" />
<SettingsMosdal v-if="showSettingsModal" @close="showSettingsModal = false" />
</transition>
<vue3-snackbar top right />
</template>
Expand Down
32 changes: 8 additions & 24 deletions resources/js/Pages/Dashboard.vue
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
<script setup>
import axios from 'axios'
import {Head, router, usePage} from '@inertiajs/vue3'
import {Head, usePage} from '@inertiajs/vue3'
import MainLayout from '@/Layouts/MainLayout.vue'
import VideoCard from '@/Components/Dashboard/VideoCard.vue'
import {computed, onMounted, ref} from 'vue'
import {computed, ref} from 'vue'
import useSlipSockets from '@/Composables/useSlipSockets.js'
import {useSnackbar} from 'vue3-snackbar'
import useInfiniteScrolling from '@/Composables/useInfiniteScrolling.js'
let slip = ref({})
const snackbar = useSnackbar()
import {useInfiniteScrolling} from '@/Composables/useInfiniteScrolling.js'
const slips = ref(computed(() => usePage().props.slips))
// TODO: Refactor
function test(v){
const existingIndex = slips.value.data.findIndex(slip => slip.id === v.id)
Expand All @@ -25,23 +22,9 @@ function test(v){
}
}
const { loadMoreIntersect, isFetching } = useInfiniteScrolling(slips)
const openModal = () => {
showEditSlip.value = !showEditSlip.value
}
const handleEditSlip = (updatedSlip) => {
slip.value = updatedSlip
}
const slips = ref(computed(() => usePage().props.slips))
const isFetching = ref(false)
const loadMoreIntersect = ref(null)
useInfiniteScrolling()
const snackbar = useSnackbar()
useSlipSockets(snackbar)
</script>

Expand All @@ -53,6 +36,7 @@ useSlipSockets(snackbar)
<VideoCard v-for="slip in slips.data" :key="slip.token" :slip="slip" />
</div>
</div>

<span ref="loadMoreIntersect" />
<div class="flex items-center justify-center p-8">
<div v-if="isFetching">
Expand Down

0 comments on commit 5863075

Please sign in to comment.