62 lines
1.6 KiB
TypeScript
Raw Normal View History

import {
Component,
OnInit,
Input,
Inject,
ElementRef,
AfterViewInit
} from '@angular/core';
2019-11-06 13:48:06 +09:00
import { Info, StickerEventJson } from '@ucap-webmessenger/protocol-event';
2019-10-14 15:34:00 +09:00
import { NGXLogger } from 'ngx-logger';
import { StickerInfo } from '../../models/sticker-info.json';
import { UCAP_NATIVE_SERVICE, NativeService } from '@ucap-webmessenger/native';
2019-10-07 13:49:12 +09:00
@Component({
selector: 'ucap-chat-message-box-sticker',
templateUrl: './sticker.component.html',
styleUrls: ['./sticker.component.scss']
})
export class StickerComponent implements OnInit, AfterViewInit {
2019-10-14 15:34:00 +09:00
@Input()
2019-11-06 13:48:06 +09:00
message: Info<StickerEventJson>;
2019-10-07 13:49:12 +09:00
contents: string;
2019-10-14 15:34:00 +09:00
stickerUrl?: string;
constructor(
private logger: NGXLogger,
private elementRef: ElementRef,
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService
) {}
2019-10-14 15:34:00 +09:00
ngOnInit() {
try {
2019-11-06 13:48:06 +09:00
if (!!this.message.sentMessageJson.file) {
this.stickerUrl = `assets/sticker/sticker_s_${this.message.sentMessageJson.file}.png`;
2019-10-14 15:34:00 +09:00
}
if (!!this.message.sentMessageJson.chat) {
this.contents = this.message.sentMessageJson.chat;
}
2019-10-14 15:34:00 +09:00
} catch (e) {
this.logger.error(e);
}
}
ngAfterViewInit(): void {
if (
!!this.elementRef.nativeElement &&
!!this.elementRef.nativeElement.querySelector('a')
) {
const elements = this.elementRef.nativeElement.querySelectorAll('a');
elements.forEach(element => {
element.addEventListener('click', this.onClickEvent.bind(this));
});
}
}
onClickEvent(event: MouseEvent) {
this.nativeService.openDefaultBrowser(
(event.target as HTMLAnchorElement).text
);
}
2019-10-07 13:49:12 +09:00
}