import { sequelizeTypescript } from '@server/initializers/database' ; import { getServerActor } from '@server/models/application/application' ; import { MAccountBlocklist , MAccountId , MAccountServer , MServerBlocklist } from '@server/types/models' ; import { AccountBlocklistModel } from '../models/account/account-blocklist' ; import { ServerBlocklistModel } from '../models/server/server-blocklist' ; function addAccountInBlocklist ( byAccountId , targetAccountId ) { return sequelizeTypescript . transaction ( async ( t ) => { return AccountBlocklistModel . upsert ( { accountId : byAccountId , targetAccountId : targetAccountId } , { transaction : t } ) ; } ) ; } function addServerInBlocklist ( byAccountId , targetServerId ) { return sequelizeTypescript . transaction ( async ( t ) => { return ServerBlocklistModel . upsert ( { accountId : byAccountId , targetServerId } , { transaction : t } ) ; } ) ; } function removeAccountFromBlocklist ( accountBlock ) { return sequelizeTypescript . transaction ( async ( t ) => { return accountBlock . destroy ( { transaction : t } ) ; } ) ; } function removeServerFromBlocklist ( serverBlock ) { return sequelizeTypescript . transaction ( async ( t ) => { return serverBlock . destroy ( { transaction : t } ) ; } ) ; } async function isBlockedByServerOrAccount ( targetAccount , userAccount ? ) { const serverAccountId = ( await getServerActor ( ) ) . Account . id ; const sourceAccounts = [ serverAccountId ] ; if ( userAccount ) sourceAccounts . push ( userAccount . id ) ; const accountMutedHash = await AccountBlocklistModel . isAccountMutedByAccounts ( sourceAccounts , targetAccount . id ) ; if ( accountMutedHash [ serverAccountId ] || ( userAccount && accountMutedHash [ userAccount . id ] ) ) { return true ; } const instanceMutedHash = await ServerBlocklistModel . isServerMutedByAccounts ( sourceAccounts , targetAccount . Actor . serverId ) ; if ( instanceMutedHash [ serverAccountId ] || ( userAccount && instanceMutedHash [ userAccount . id ] ) ) { return true ; } return false ; } export { addAccountInBlocklist , addServerInBlocklist , removeAccountFromBlocklist , removeServerFromBlocklist , isBlockedByServerOrAccount } ;