Commit f5118c96 authored by Ben Hayward's avatar Ben Hayward

Refactored and got rid of account switching bug

1 merge request!628[Sprint/QuietQuail](fix): Avatar changing forms now change avatar without refresh of components
Pipeline #93466360 passed with stages
in 73 minutes
......@@ -4,17 +4,28 @@
*/
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { Session } from '../../services/session';
import { MindsUser } from '../../interfaces/entities';
@Injectable({
providedIn: 'root',
})
export class UserAvatarService {
private minds = window.Minds;
public src$: BehaviorSubject<string> = new BehaviorSubject(null);
private user: MindsUser;
public src$: BehaviorSubject<string>;
constructor() {
this.src$.next(
`${this.minds.cdn_url}icon/${this.minds.user.guid}/large/${this.minds.user.icontime}`
constructor(public session: Session) {
this.init();
}
/**
* Sets the current user and avatar src.
*/
public init(): void {
this.user = this.session.getLoggedInUser();
this.src$ = new BehaviorSubject(
`${this.minds.cdn_url}icon/${this.user.guid}/large/${this.user.icontime}`
);
}
}
......@@ -3,6 +3,7 @@ import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { Client } from '../../../services/api';
import { Session } from '../../../services/session';
import { UserAvatarService } from '../../../common/services/user-avatar.service';
@Component({
moduleId: module.id,
......@@ -31,7 +32,8 @@ export class LoginForm {
public session: Session,
public client: Client,
fb: FormBuilder,
private zone: NgZone
private zone: NgZone,
private userAvatarService: UserAvatarService
) {
this.form = fb.group({
username: ['', Validators.required],
......@@ -65,6 +67,7 @@ export class LoginForm {
// TODO: [emi/sprint/bison] Find a way to reset controls. Old implementation throws Exception;
this.inProgress = false;
this.session.login(data.user);
this.userAvatarService.init();
this.done.next(data.user);
})
.catch(e => {
......@@ -102,6 +105,7 @@ export class LoginForm {
})
.then((data: any) => {
this.session.login(data.user);
this.userAvatarService.init();
this.done.next(data.user);
})
.catch(e => {
......
Please register or to comment