You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.4 KiB
48 lines
1.4 KiB
import { html, Component } from "https://unpkg.com/htm/preact/index.mjs?module"; |
|
import UserInfo from './user-info.js'; |
|
import Chat from './chat.js'; |
|
|
|
import { getLocalStorage, generateAvatar, generateUsername } from '../utils.js'; |
|
import { KEY_USERNAME, KEY_AVATAR } from '../utils/chat.js'; |
|
|
|
export class StandaloneChat extends Component { |
|
constructor(props, context) { |
|
super(props, context); |
|
|
|
this.state = { |
|
chatEnabled: true, // always true for standalone chat |
|
username: getLocalStorage(KEY_USERNAME) || generateUsername(), |
|
userAvatarImage: getLocalStorage(KEY_AVATAR) || generateAvatar(`${this.username}${Date.now()}`), |
|
}; |
|
|
|
this.handleUsernameChange = this.handleUsernameChange.bind(this); |
|
} |
|
|
|
handleUsernameChange(newName, newAvatar) { |
|
this.setState({ |
|
username: newName, |
|
userAvatarImage: newAvatar, |
|
}); |
|
} |
|
|
|
handleChatToggle() { |
|
return; |
|
} |
|
|
|
render(props, state) { |
|
const { username, userAvatarImage } = state; |
|
return ( |
|
html` |
|
<div class="flex"> |
|
<${UserInfo} |
|
username=${username} |
|
userAvatarImage=${userAvatarImage} |
|
handleUsernameChange=${this.handleUsernameChange} |
|
handleChatToggle=${this.handleChatToggle} |
|
/> |
|
<${Chat} username=${username} userAvatarImage=${userAvatarImage} chatEnabled /> |
|
</div> |
|
`); |
|
} |
|
|
|
}
|
|
|