mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 19:42:24 +02:00
Stronger model typings
This commit is contained in:
parent
13176a07a9
commit
453e83ea5d
176 changed files with 2118 additions and 1133 deletions
|
@ -5,7 +5,6 @@ import { AccountModel } from '../models/account/account'
|
|||
import { UserModel } from '../models/account/user'
|
||||
import { buildActorInstance, getAccountActivityPubUrl, setAsyncActorKeys } from './activitypub'
|
||||
import { createVideoChannel } from './video-channel'
|
||||
import { VideoChannelModel } from '../models/video/video-channel'
|
||||
import { ActorModel } from '../models/activitypub/actor'
|
||||
import { UserNotificationSettingModel } from '../models/account/user-notification-setting'
|
||||
import { UserNotificationSetting, UserNotificationSettingValue } from '../../shared/models/users'
|
||||
|
@ -14,14 +13,17 @@ import { sequelizeTypescript } from '../initializers/database'
|
|||
import { Transaction } from 'sequelize/types'
|
||||
import { Redis } from './redis'
|
||||
import { Emailer } from './emailer'
|
||||
import { MAccountActor, MActor, MChannelActor } from '../typings/models'
|
||||
import { MUser, MUserId, MUserNotifSettingAccount } from '../typings/models/user'
|
||||
|
||||
type ChannelNames = { name: string, displayName: string }
|
||||
|
||||
async function createUserAccountAndChannelAndPlaylist (parameters: {
|
||||
userToCreate: UserModel,
|
||||
userDisplayName?: string,
|
||||
channelNames?: ChannelNames,
|
||||
validateUser?: boolean
|
||||
}) {
|
||||
}): Promise<{ user: MUserNotifSettingAccount, account: MAccountActor, videoChannel: MChannelActor }> {
|
||||
const { userToCreate, userDisplayName, channelNames, validateUser = true } = parameters
|
||||
|
||||
const { user, account, videoChannel } = await sequelizeTypescript.transaction(async t => {
|
||||
|
@ -30,7 +32,7 @@ async function createUserAccountAndChannelAndPlaylist (parameters: {
|
|||
validate: validateUser
|
||||
}
|
||||
|
||||
const userCreated = await userToCreate.save(userOptions)
|
||||
const userCreated: MUserNotifSettingAccount = await userToCreate.save(userOptions)
|
||||
userCreated.NotificationSetting = await createDefaultUserNotificationSettings(userCreated, t)
|
||||
|
||||
const accountCreated = await createLocalAccountWithoutKeys({
|
||||
|
@ -50,15 +52,15 @@ async function createUserAccountAndChannelAndPlaylist (parameters: {
|
|||
return { user: userCreated, account: accountCreated, videoChannel, videoPlaylist }
|
||||
})
|
||||
|
||||
const [ accountKeys, channelKeys ] = await Promise.all([
|
||||
const [ accountActorWithKeys, channelActorWithKeys ] = await Promise.all([
|
||||
setAsyncActorKeys(account.Actor),
|
||||
setAsyncActorKeys(videoChannel.Actor)
|
||||
])
|
||||
|
||||
account.Actor = accountKeys
|
||||
videoChannel.Actor = channelKeys
|
||||
account.Actor = accountActorWithKeys
|
||||
videoChannel.Actor = channelActorWithKeys
|
||||
|
||||
return { user, account, videoChannel } as { user: UserModel, account: AccountModel, videoChannel: VideoChannelModel }
|
||||
return { user, account, videoChannel }
|
||||
}
|
||||
|
||||
async function createLocalAccountWithoutKeys (parameters: {
|
||||
|
@ -73,7 +75,7 @@ async function createLocalAccountWithoutKeys (parameters: {
|
|||
const url = getAccountActivityPubUrl(name)
|
||||
|
||||
const actorInstance = buildActorInstance(type, url, name)
|
||||
const actorInstanceCreated = await actorInstance.save({ transaction: t })
|
||||
const actorInstanceCreated: MActor = await actorInstance.save({ transaction: t })
|
||||
|
||||
const accountInstance = new AccountModel({
|
||||
name: displayName || name,
|
||||
|
@ -82,7 +84,7 @@ async function createLocalAccountWithoutKeys (parameters: {
|
|||
actorId: actorInstanceCreated.id
|
||||
})
|
||||
|
||||
const accountInstanceCreated = await accountInstance.save({ transaction: t })
|
||||
const accountInstanceCreated: MAccountActor = await accountInstance.save({ transaction: t })
|
||||
accountInstanceCreated.Actor = actorInstanceCreated
|
||||
|
||||
return accountInstanceCreated
|
||||
|
@ -102,7 +104,7 @@ async function createApplicationActor (applicationId: number) {
|
|||
return accountCreated
|
||||
}
|
||||
|
||||
async function sendVerifyUserEmail (user: UserModel, isPendingEmail = false) {
|
||||
async function sendVerifyUserEmail (user: MUser, isPendingEmail = false) {
|
||||
const verificationString = await Redis.Instance.setVerifyEmailVerificationString(user.id)
|
||||
let url = WEBSERVER.URL + '/verify-account/email?userId=' + user.id + '&verificationString=' + verificationString
|
||||
|
||||
|
@ -124,7 +126,7 @@ export {
|
|||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function createDefaultUserNotificationSettings (user: UserModel, t: Transaction | undefined) {
|
||||
function createDefaultUserNotificationSettings (user: MUserId, t: Transaction | undefined) {
|
||||
const values: UserNotificationSetting & { userId: number } = {
|
||||
userId: user.id,
|
||||
newVideoFromSubscription: UserNotificationSettingValue.WEB,
|
||||
|
@ -143,7 +145,7 @@ function createDefaultUserNotificationSettings (user: UserModel, t: Transaction
|
|||
return UserNotificationSettingModel.create(values, { transaction: t })
|
||||
}
|
||||
|
||||
async function buildChannelAttributes (user: UserModel, channelNames?: ChannelNames) {
|
||||
async function buildChannelAttributes (user: MUser, channelNames?: ChannelNames) {
|
||||
if (channelNames) return channelNames
|
||||
|
||||
let channelName = user.username + '_channel'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue