Skip to content

Instantly share code, notes, and snippets.

@h-mikisato
Last active August 14, 2021 18:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save h-mikisato/00cf0f82b786f2482ddd8aa105509de1 to your computer and use it in GitHub Desktop.
Save h-mikisato/00cf0f82b786f2482ddd8aa105509de1 to your computer and use it in GitHub Desktop.
Udonarium v1.13.1 対応 チャットのURLのリンク化パッチ
diff --git a/package.json b/package.json
index 8b3d35e..48d15a6 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"@angular/platform-browser": "^11.0.7",
"@angular/platform-browser-dynamic": "^11.0.7",
"@angular/router": "^11.0.7",
+ "autolinker": "^3.14.2",
"crypto-js": "^3.1.9-1",
"file-saver": "^2.0.2",
"hammerjs": "^2.0.8",
@@ -27,6 +28,7 @@
"jszip": "~3.1.5",
"lzbase62": "^1.4.9",
"msgpack-lite": "^0.1.26",
+ "ngx-linky": "^3.0.0",
"pako": "^1.0.10",
"rxjs": "^6.6.3",
"tslib": "^2.0.0",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 519e76f..e5f387d 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -27,6 +27,7 @@ import { GameTableSettingComponent } from 'component/game-table-setting/game-tab
import { GameTableComponent } from 'component/game-table/game-table.component';
import { JukeboxComponent } from 'component/jukebox/jukebox.component';
import { LobbyComponent } from 'component/lobby/lobby.component';
+import { LinkyModule } from 'ngx-linky';
import { ModalComponent } from 'component/modal/modal.component';
import { NetworkIndicatorComponent } from 'component/network-indicator/network-indicator.component';
import { OverviewPanelComponent } from 'component/overview-panel/overview-panel.component';
@@ -106,7 +107,8 @@ import { AppComponent } from './app.component';
BrowserModule,
BrowserAnimationsModule,
CommonModule,
- FormsModule
+ FormsModule,
+ LinkyModule,
],
providers: [
AppConfigService,
diff --git a/src/app/component/chat-message/chat-message.component.html b/src/app/component/chat-message/chat-message.component.html
index 9ca58c1..cbe8581 100644
--- a/src/app/component/chat-message/chat-message.component.html
+++ b/src/app/component/chat-message/chat-message.component.html
@@ -17,7 +17,7 @@
</div>
</div>
<ng-template #visible>
- <span>{{chatMessage.text}}</span>
+ <span [innerHTML]="escapeHtml(chatMessage.text) | linky:{stripPrefix: false}"></span>
<button *ngIf="chatMessage.isSecret" (click)="discloseMessage()">結果を公開</button>
</ng-template>
<ng-template #secret>
diff --git a/src/app/component/chat-message/chat-message.component.ts b/src/app/component/chat-message/chat-message.component.ts
index 5e66b21..0ddc395 100644
--- a/src/app/component/chat-message/chat-message.component.ts
+++ b/src/app/component/chat-message/chat-message.component.ts
@@ -50,4 +50,9 @@ export class ChatMessageComponent implements OnInit, AfterViewInit {
discloseMessage() {
this.chatMessage.tag = this.chatMessage.tag.replace('secret', '');
}
+
+ escapeHtml(text) {
+ return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
+ .replace(/"/g, "&quot;").replace(/'/g, "&#039;");
+ }
}
@h-mikisato
Copy link
Author

ライセンスは元プロダクトに基づきMIT Licenseとします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment