From: Chocobozzz Date: Fri, 10 Jan 2020 10:15:07 +0000 (+0100) Subject: Avoid follow SQL conflicts X-Git-Tag: v2.1.0-rc.1~41 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ab4d4db44a4f943056b856cbdc7b8d157cabf9af;p=oweals%2Fpeertube.git Avoid follow SQL conflicts --- diff --git a/client/src/app/shared/user-subscription/subscribe-button.component.ts b/client/src/app/shared/user-subscription/subscribe-button.component.ts index 888f6552a..81a0df512 100644 --- a/client/src/app/shared/user-subscription/subscribe-button.component.ts +++ b/client/src/app/shared/user-subscription/subscribe-button.component.ts @@ -7,7 +7,8 @@ import { I18n } from '@ngx-translate/i18n-polyfill' import { VideoService } from '@app/shared/video/video.service' import { FeedFormat } from '../../../../../shared/models/feeds' import { Account } from '@app/shared/account/account.model' -import { forkJoin, merge } from 'rxjs' +import { concat, forkJoin, merge } from 'rxjs' +import { toArray } from 'rxjs/operators' @Component({ selector: 'my-subscribe-button', @@ -82,12 +83,14 @@ export class SubscribeButtonComponent implements OnInit { } localSubscribe () { + const subscribedStatus = this.subscribeStatus(false) + const observableBatch = this.videoChannels .map(videoChannel => this.getChannelHandler(videoChannel)) - .filter(handle => this.subscribeStatus(false).includes(handle)) + .filter(handle => subscribedStatus.includes(handle)) .map(handle => this.userSubscriptionService.addSubscription(handle)) - merge(observableBatch, 2) + forkJoin(observableBatch) .subscribe( () => { this.notifier.success( @@ -116,25 +119,27 @@ export class SubscribeButtonComponent implements OnInit { } localUnsubscribe () { + const subscribeStatus = this.subscribeStatus(true) + const observableBatch = this.videoChannels - .map(videoChannel => this.getChannelHandler(videoChannel)) - .filter(handle => this.subscribeStatus(true).includes(handle)) - .map(handle => this.userSubscriptionService.deleteSubscription(handle)) + .map(videoChannel => this.getChannelHandler(videoChannel)) + .filter(handle => subscribeStatus.includes(handle)) + .map(handle => this.userSubscriptionService.deleteSubscription(handle)) - forkJoin(observableBatch) - .subscribe( - () => { - this.notifier.success( - this.account - ? this.i18n('Unsubscribed from all channels of {{nameWithHost}}', { nameWithHost: this.account.nameWithHost }) - : this.i18n('Unsubscribed from {{nameWithHost}}', { nameWithHost: this.videoChannels[0].nameWithHost }) - , - this.i18n('Unsubscribed') - ) - }, + concat(...observableBatch) + .subscribe({ + complete: () => { + this.notifier.success( + this.account + ? this.i18n('Unsubscribed from all channels of {{nameWithHost}}', { nameWithHost: this.account.nameWithHost }) + : this.i18n('Unsubscribed from {{nameWithHost}}', { nameWithHost: this.videoChannels[ 0 ].nameWithHost }) + , + this.i18n('Unsubscribed') + ) + }, - err => this.notifier.error(err.message) - ) + error: err => this.notifier.error(err.message) + }) } isUserLoggedIn () { @@ -176,15 +181,15 @@ export class SubscribeButtonComponent implements OnInit { for (const videoChannel of this.videoChannels) { const handle = this.getChannelHandler(videoChannel) this.subscribed.set(handle, false) + merge( this.userSubscriptionService.listenToSubscriptionCacheChange(handle), this.userSubscriptionService.doesSubscriptionExist(handle) - ) - .subscribe( - res => this.subscribed.set(handle, res), + ).subscribe( + res => this.subscribed.set(handle, res), - err => this.notifier.error(err.message) - ) + err => this.notifier.error(err.message) + ) } } } diff --git a/server/initializers/constants.ts b/server/initializers/constants.ts index d4ac8bbbe..032f63c8f 100644 --- a/server/initializers/constants.ts +++ b/server/initializers/constants.ts @@ -135,7 +135,7 @@ const JOB_CONCURRENCY: { [id in (JobType | 'video-file')]: number } = { 'activitypub-http-broadcast': 1, 'activitypub-http-unicast': 5, 'activitypub-http-fetcher': 1, - 'activitypub-follow': 3, + 'activitypub-follow': 1, 'video-file-import': 1, 'video-transcoding': 1, 'video-file': 1,