|
216 | 216 | :active-panel-users="activePanel === 'users'" |
217 | 217 | :menu-go-to="menuGoTo" |
218 | 218 | :menu-toggle-role="menuToggleRole" |
219 | | - :menu-toggle-xp="menuToggleXP" |
| 219 | + :menu-toggle-xp="menuToggleXp" |
220 | 220 | :menu-toggle-speech="menuToggleSpeech" |
221 | 221 | :menu-beam-to="menuBeamTo" |
222 | 222 | :menu-whisper="menuWhisper" |
|
254 | 254 | import Vue from 'vue'; |
255 | 255 | import { debugMsg } from '@/helpers'; |
256 | 256 | import UserMenu from './UserMenu.vue'; |
257 | | -export default Vue.extend({ |
| 257 | +
|
| 258 | +interface ChatData { |
| 259 | + message: string; |
| 260 | + messages: any[]; |
| 261 | + users: any[]; |
| 262 | + backpackObjects: any[]; |
| 263 | + primaryRole: string; |
| 264 | + displayRole: boolean; |
| 265 | + xpAmount: number; |
| 266 | + activePanel: string; |
| 267 | + objectId: any; |
| 268 | + canInteractWithObject: boolean; |
| 269 | + canModify: boolean; |
| 270 | + memberId: any; |
| 271 | + username: any; |
| 272 | + usernameBackPack: any; |
| 273 | + blockedUser: boolean; |
| 274 | + blockedMembers: any[]; |
| 275 | + cursorX: any; |
| 276 | + cursorY: any; |
| 277 | + numberOfPosts: number; |
| 278 | + userMenu: boolean; |
| 279 | + menuTop: any; |
| 280 | + menuLeft: any; |
| 281 | + menuBottom: any; |
| 282 | + menuBeamTo: boolean; |
| 283 | + menuWhisper: boolean; |
| 284 | + menuInviteChat: boolean; |
| 285 | + menuIgnore: boolean; |
| 286 | + menuDrop: boolean; |
| 287 | + menuMove: boolean; |
| 288 | + menuTake: boolean; |
| 289 | + menuBuy: boolean; |
| 290 | + menuDestroy: boolean; |
| 291 | + menuProperties: boolean; |
| 292 | + menuRequestBackpack: boolean; |
| 293 | + menuGoTo: boolean; |
| 294 | + menuToggleRole: boolean; |
| 295 | + menuToggleXp: boolean; |
| 296 | + menuToggleSpeech: boolean; |
| 297 | + mallObject: boolean; |
| 298 | + activePlaces: any[]; |
| 299 | + placeList: any[]; |
| 300 | + placeType: any; |
| 301 | + placeUsername: any; |
| 302 | + placeSlug: any; |
| 303 | + placeId: any; |
| 304 | + chatIntervalId: any; |
| 305 | + pingIntervalId: any; |
| 306 | + worldMembers: any[]; |
| 307 | + chatEnabled: boolean; |
| 308 | + showRole: boolean; |
| 309 | + showXP: boolean; |
| 310 | + tts: boolean; |
| 311 | + virtualPet: any; |
| 312 | + virtualPetDirectly: any[]; |
| 313 | + virtualPetWhisper: any[]; |
| 314 | + virtualPetBeam: any[]; |
| 315 | + virtualPetMessageData: any[]; |
| 316 | + virtualPetInputs: any[][]; |
| 317 | + virtualPetOutputs: any[][]; |
| 318 | + virtualPetDefault: any[]; |
| 319 | + entryMessageCode: number; |
| 320 | + selectedId: any; |
| 321 | +} |
| 322 | +
|
| 323 | +interface ChatMethods { |
| 324 | + [key: string]: (...args: any[]) => any; |
| 325 | +} |
| 326 | +
|
| 327 | +interface ChatComputed { |
| 328 | + connected: boolean; |
| 329 | +} |
| 330 | +
|
| 331 | +export default Vue.extend<ChatData, ChatMethods, ChatComputed, Record<string, any>>({ |
258 | 332 | name: "Chat", |
259 | 333 | components: { |
260 | 334 | UserMenu, |
261 | 335 | }, |
262 | | - props: [ |
263 | | - "place", |
264 | | - "sharedEvent", |
265 | | - "sharedObjects", |
266 | | - "clickId", |
267 | | - ], |
268 | | - data: () => { |
| 336 | + props: { |
| 337 | + place: { |
| 338 | + default: null, |
| 339 | + }, |
| 340 | + sharedEvent: { |
| 341 | + default: null, |
| 342 | + }, |
| 343 | + sharedObjects: { |
| 344 | + default: null, |
| 345 | + }, |
| 346 | + clickId: { |
| 347 | + default: null, |
| 348 | + }, |
| 349 | + }, |
| 350 | + data(): ChatData { |
269 | 351 | return { |
270 | 352 | message: "", |
271 | 353 | messages: [], |
@@ -303,7 +385,7 @@ export default Vue.extend({ |
303 | 385 | menuRequestBackpack: true, |
304 | 386 | menuGoTo: false, |
305 | 387 | menuToggleRole: false, |
306 | | - menuToggleXP: false, |
| 388 | + menuToggleXp: false, |
307 | 389 | menuToggleSpeech: false, |
308 | 390 | mallObject: false, |
309 | 391 | activePlaces: [], |
@@ -486,7 +568,7 @@ export default Vue.extend({ |
486 | 568 | this.menuRequestBackpack = false; |
487 | 569 | this.menuGoTo = false; |
488 | 570 | this.menuToggleRole = false; |
489 | | - this.menuToggleXP = false; |
| 571 | + this.menuToggleXp = false; |
490 | 572 | this.menuToggleSpeech = false; |
491 | 573 | this.mallObject = false; |
492 | 574 | this.placeType = null; |
@@ -532,7 +614,7 @@ export default Vue.extend({ |
532 | 614 | if(this.activePanel === 'users'){ |
533 | 615 | if(target[0] === this.$store.data.user.id){ |
534 | 616 | this.menuToggleRole = true; |
535 | | - this.menuToggleXP = true; |
| 617 | + this.menuToggleXp = true; |
536 | 618 | this.menuToggleSpeech = true; |
537 | 619 | } else { |
538 | 620 | this.menuIgnore = true; |
@@ -1064,7 +1146,7 @@ export default Vue.extend({ |
1064 | 1146 | this.messages.splice(index, 1); |
1065 | 1147 | } |
1066 | 1148 | }, |
1067 | | - } as any, |
| 1149 | + }, |
1068 | 1150 | watch: { |
1069 | 1151 | place() { |
1070 | 1152 | this.startNewChat(); |
|
0 commit comments