- function getVideosFunctions (token?: string, query = {}) {
- return getMyUserInformation(server.url, server.accessToken)
- .then(res => {
- const user: User = res.body
- const videoChannelName = user.videoChannels[0].name
- const accountName = user.account.name + '@' + user.account.host
-
- if (token) {
- return Promise.all([
- getVideosListWithToken(server.url, token, query),
- searchVideoWithToken(server.url, 'n', token, query),
- getAccountVideos(server.url, token, accountName, 0, 5, undefined, query),
- getVideoChannelVideos(server.url, token, videoChannelName, 0, 5, undefined, query)
- ])
- }
-
- return Promise.all([
- getVideosList(server.url),
- searchVideo(server.url, 'n'),
- getAccountVideos(server.url, undefined, accountName, 0, 5),
- getVideoChannelVideos(server.url, undefined, videoChannelName, 0, 5)
- ])
- })
+ async function getVideosFunctions (token?: string, query: { nsfw?: BooleanBothQuery } = {}) {
+ const user = await server.users.getMyInfo()
+
+ const channelName = user.videoChannels[0].name
+ const accountName = user.account.name + '@' + user.account.host
+
+ const hasQuery = Object.keys(query).length !== 0
+ let promises: Promise<ResultList<Video>>[]
+
+ if (token) {
+ promises = [
+ server.search.advancedVideoSearch({ token, search: { search: 'n', sort: '-publishedAt', ...query } }),
+ server.videos.listWithToken({ token, ...query }),
+ server.videos.listByAccount({ token, handle: accountName, ...query }),
+ server.videos.listByChannel({ token, handle: channelName, ...query })
+ ]
+
+ // Overviews do not support video filters
+ if (!hasQuery) {
+ const p = server.overviews.getVideos({ page: 1, token })
+ .then(res => createOverviewRes(res))
+ promises.push(p)
+ }
+
+ return Promise.all(promises)
+ }
+
+ promises = [
+ server.search.searchVideos({ search: 'n', sort: '-publishedAt' }),
+ server.videos.list(),
+ server.videos.listByAccount({ token: null, handle: accountName }),
+ server.videos.listByChannel({ token: null, handle: channelName })
+ ]
+
+ // Overviews do not support video filters
+ if (!hasQuery) {
+ const p = server.overviews.getVideos({ page: 1 })
+ .then(res => createOverviewRes(res))
+ promises.push(p)
+ }
+
+ return Promise.all(promises)