mempool/frontend/src/app/components/rate-unit-selector/rate-unit-selector.component.ts
2023-07-11 10:00:40 +09:00

46 lines
1.4 KiB
TypeScript

import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { StorageService } from '../../services/storage.service';
import { StateService } from '../../services/state.service';
import { Subscription } from 'rxjs';
@Component({
selector: 'app-rate-unit-selector',
templateUrl: './rate-unit-selector.component.html',
styleUrls: ['./rate-unit-selector.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class RateUnitSelectorComponent implements OnInit, OnDestroy {
rateUnitForm: UntypedFormGroup;
rateUnitSub: Subscription;
units = [
{ name: 'vb', label: 'sat/vB' },
{ name: 'wu', label: 'sat/WU' },
];
constructor(
private formBuilder: UntypedFormBuilder,
private stateService: StateService,
private storageService: StorageService,
) { }
ngOnInit() {
this.rateUnitForm = this.formBuilder.group({
rateUnits: ['vb']
});
this.rateUnitSub = this.stateService.rateUnits$.subscribe((units) => {
this.rateUnitForm.get('rateUnits')?.setValue(units);
});
}
changeUnits() {
const newUnits = this.rateUnitForm.get('rateUnits')?.value;
this.storageService.setValue('rate-unit-preference', newUnits);
this.stateService.rateUnits$.next(newUnits);
}
ngOnDestroy(): void {
this.rateUnitSub.unsubscribe();
}
}