55 lines
1.3 KiB
JavaScript
55 lines
1.3 KiB
JavaScript
import { defineStore } from 'pinia'
|
|
|
|
import { useOAuthStore } from 'src/stores/oauth.js'
|
|
import { useStatusesStore } from 'src/stores/statuses.js'
|
|
import { useUsersStore } from 'src/stores/users.js'
|
|
|
|
import { search2 } from 'src/api/public.js'
|
|
|
|
export const useSearchStore = defineStore('search', {
|
|
actions: {
|
|
async search({ q, resolve, limit, offset, following, type }) {
|
|
const { data, ...rest } = await search2({
|
|
q,
|
|
resolve,
|
|
limit,
|
|
offset,
|
|
following,
|
|
type,
|
|
credentials: useOAuthStore().token,
|
|
})
|
|
|
|
const { accounts, statuses } = data
|
|
|
|
useUsersStore().addNewUsers({
|
|
...rest,
|
|
data: accounts,
|
|
})
|
|
|
|
useStatusesStore().addNewStatuses({
|
|
...rest,
|
|
statuses,
|
|
})
|
|
|
|
const output = {}
|
|
output.statuses = statuses.map((s) =>
|
|
useStatusesStore().allStatuses.get(s.id),
|
|
)
|
|
output.accounts = accounts.map((s) => useUsersStore().findUser(s.id))
|
|
return output
|
|
},
|
|
|
|
// Search
|
|
searchUsers({ query }) {
|
|
return searchUsers({
|
|
query,
|
|
credentials: useOAuthStore().token,
|
|
}).then((result) => {
|
|
const { data } = result
|
|
useUsersStore().addNewUsers(result)
|
|
|
|
return data.map((s) => useUsersStore().findUser(s.id))
|
|
})
|
|
},
|
|
},
|
|
})
|