matrix-dimension/web/app/integration-bag/integration-bag.component.ts

50 lines
1.5 KiB
TypeScript
Raw Normal View History

2021-09-01 23:01:01 +00:00
import {
Component,
EventEmitter,
Input,
OnChanges,
Output,
SimpleChange,
SimpleChanges,
} from "@angular/core";
2017-12-16 04:22:34 +00:00
import { DomSanitizer, SafeResourceUrl } from "@angular/platform-browser";
import { FE_Integration } from "../shared/models/integration";
import { MediaService } from "../shared/services/media.service";
2017-12-16 04:22:34 +00:00
@Component({
2021-09-01 23:29:24 +00:00
selector: "my-integration-bag",
2017-12-16 04:22:34 +00:00
templateUrl: "./integration-bag.component.html",
styleUrls: ["./integration-bag.component.scss"],
})
export class IntegrationBagComponent implements OnChanges {
@Input() integrations: FE_Integration[];
2021-09-01 23:01:01 +00:00
@Output() integrationClicked: EventEmitter<FE_Integration> =
new EventEmitter<FE_Integration>();
2017-12-16 04:22:34 +00:00
2021-09-01 23:01:01 +00:00
constructor(private sanitizer: DomSanitizer, private media: MediaService) {}
public ngOnChanges(changes: SimpleChanges) {
const change: SimpleChange = changes.integrations;
(<FE_Integration[]>change.currentValue).map(async (i) => {
if (i.avatarUrl.startsWith("mxc://")) {
2021-09-01 23:01:01 +00:00
i.avatarUrl = await this.media.getThumbnailUrl(
i.avatarUrl,
128,
128,
"scale",
true
);
}
});
2017-12-16 04:22:34 +00:00
}
public getSafeUrl(url: string): SafeResourceUrl {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
public onClick(integration: FE_Integration) {
2017-12-16 04:22:34 +00:00
this.integrationClicked.emit(integration);
}
}