44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
import { ref } from 'vue'
|
|
|
|
import { useFollowRequestsStore } from 'src/stores/follow_requests.js'
|
|
import { useUsersStore } from 'src/stores/users.js'
|
|
|
|
import { fetchFollowRequests } from 'src/api/user.js'
|
|
import { promiseInterval } from 'src/services/promise_interval/promise_interval.js'
|
|
|
|
const followRequestFetcher = ({ credentials }) => {
|
|
const interval = ref(null)
|
|
|
|
const fetchAndUpdate = () => {
|
|
return fetchFollowRequests({ credentials })
|
|
.then((result) => {
|
|
const { data: requests } = result
|
|
useFollowRequestsStore().setFollowRequests(requests)
|
|
useUsersStore().addNewUsers(result)
|
|
})
|
|
.catch((e) => {
|
|
console.error(e)
|
|
})
|
|
}
|
|
|
|
const startFetching = () => {
|
|
if (interval.value) throw new Error('Interval already exists!')
|
|
|
|
fetchAndUpdate()
|
|
|
|
interval.value = promiseInterval(fetchAndUpdate, 10000)
|
|
}
|
|
|
|
const stopFetching = () => {
|
|
interval.value.stop()
|
|
interval.value = null
|
|
}
|
|
|
|
return {
|
|
fetchAndUpdate,
|
|
startFetching,
|
|
stopFetching,
|
|
}
|
|
}
|
|
|
|
export default followRequestFetcher
|