+ getOriginalVideoFileTotalFromUser,
+ getOriginalVideoFileTotalDailyFromUser,
+ createApplicationActor,
+ createUserAccountAndChannelAndPlaylist,
+ createLocalAccountWithoutKeys,
+ sendVerifyUserEmail,
+ isAbleToUploadVideo
+}
+
+// ---------------------------------------------------------------------------
+
+function createDefaultUserNotificationSettings (user: MUserId, t: Transaction | undefined) {
+ const values: UserNotificationSetting & { userId: number } = {
+ userId: user.id,
+ newVideoFromSubscription: UserNotificationSettingValue.WEB,
+ newCommentOnMyVideo: UserNotificationSettingValue.WEB,
+ myVideoImportFinished: UserNotificationSettingValue.WEB,
+ myVideoPublished: UserNotificationSettingValue.WEB,
+ abuseAsModerator: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
+ videoAutoBlacklistAsModerator: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
+ blacklistOnMyVideo: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
+ newUserRegistration: UserNotificationSettingValue.WEB,
+ commentMention: UserNotificationSettingValue.WEB,
+ newFollow: UserNotificationSettingValue.WEB,
+ newInstanceFollower: UserNotificationSettingValue.WEB,
+ abuseNewMessage: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
+ abuseStateChange: UserNotificationSettingValue.WEB | UserNotificationSettingValue.EMAIL,
+ autoInstanceFollowing: UserNotificationSettingValue.WEB
+ }
+
+ return UserNotificationSettingModel.create(values, { transaction: t })
+}
+
+async function buildChannelAttributes (user: MUser, channelNames?: ChannelNames) {
+ if (channelNames) return channelNames
+
+ let channelName = user.username + '_channel'
+
+ // Conflict, generate uuid instead
+ const actor = await ActorModel.loadLocalByName(channelName)
+ if (actor) channelName = uuidv4()
+
+ const videoChannelDisplayName = `Main ${user.username} channel`
+
+ return {
+ name: channelName,
+ displayName: videoChannelDisplayName
+ }