You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import express from 'express'
|
|||
import { CONFIG } from '@server/initializers/config.js'
|
|||
import { AccountBlocklistModel } from '@server/models/account/account-blocklist.js'
|
|||
import { getServerActor } from '@server/models/application/application.js'
|
|||
import { ServerBlocklistModel } from '@server/models/server/server-blocklist.js'
|
|||
import { SearchTargetQuery } from '@peertube/peertube-models'
|
|||
|
|||
function isSearchIndexSearch (query: SearchTargetQuery) {
|
|||
if (query.searchTarget === 'search-index') return true
|
|||
|
|||
const searchIndexConfig = CONFIG.SEARCH.SEARCH_INDEX
|
|||
|
|||
if (searchIndexConfig.ENABLED !== true) return false
|
|||
|
|||
if (searchIndexConfig.IS_DEFAULT_SEARCH && !query.searchTarget) return true
|
|||
|
|||
return false
|
|||
}
|
|||
|
|||
async function buildMutedForSearchIndex (res: express.Response) {
|
|||
const serverActor = await getServerActor()
|
|||
const accountIds = [ serverActor.Account.id ]
|
|||
|
|||
if (res.locals.oauth) {
|
|||
accountIds.push(res.locals.oauth.token.User.Account.id)
|
|||
}
|
|||
|
|||
const [ blockedHosts, blockedAccounts ] = await Promise.all([
|
|||
ServerBlocklistModel.listHostsBlockedBy(accountIds),
|
|||
AccountBlocklistModel.listHandlesBlockedBy(accountIds)
|
|||
])
|
|||
|
|||
return {
|
|||
blockedHosts,
|
|||
blockedAccounts
|
|||
}
|
|||
}
|
|||
|
|||
function isURISearch (search: string) {
|
|||
if (!search) return false
|
|||
|
|||
return search.startsWith('http://') || search.startsWith('https://')
|
|||
}
|
|||
|
|||
export {
|
|||
isSearchIndexSearch,
|
|||
buildMutedForSearchIndex,
|
|||
isURISearch
|
|||
}
|