Skip to content

Commit

Permalink
Avoid follow SQL conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
Chocobozzz committed Jan 10, 2020
1 parent db84cf8 commit ab4d4db
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 25 deletions.
Expand Up @@ -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',
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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 () {
Expand Down Expand Up @@ -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)
)
}
}
}
2 changes: 1 addition & 1 deletion server/initializers/constants.ts
Expand Up @@ -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,
Expand Down

0 comments on commit ab4d4db

Please sign in to comment.