SYMBOL INDEX (499 symbols across 155 files) FILE: index.ts function exec (line 7) | function exec(commandStr: string) { FILE: jest.transformer.js method process (line 4) | process(src, filename) { FILE: packages/app/App.tsx function Main (line 7) | function Main(props: any) { FILE: packages/app/src/App.tsx type Props (line 26) | type Props = { function App (line 32) | function App({ title, primaryColor, isLogin }: Props) { FILE: packages/app/src/components/Avatar.tsx type Props (line 6) | type Props = { function Avatar (line 10) | function Avatar({ src, size }: Props) { FILE: packages/app/src/components/BackButton.tsx type Props (line 6) | type Props = { function BackButton (line 10) | function BackButton({ text = '' }: Props) { FILE: packages/app/src/components/Expression.tsx type Props (line 7) | type Props = { function Expression (line 13) | function Expression({ size, index, style }: Props) { FILE: packages/app/src/components/Image.tsx type Props (line 6) | type Props = { function Image (line 13) | function Image({ FILE: packages/app/src/components/Loading.tsx function Loading (line 8) | function Loading() { FILE: packages/app/src/components/Nofitication.tsx function enableNotification (line 13) | function enableNotification() { function disableNotification (line 22) | function disableNotification() { function Nofitication (line 32) | function Nofitication() { FILE: packages/app/src/components/PageContainer.tsx type Props (line 5) | type Props = { function PageContainer (line 10) | function PageContainer({ children, disableSafeAreaView = false }: Props) { FILE: packages/app/src/components/Toast.tsx method success (line 4) | success(message: string) { method warning (line 11) | warning(message: string) { method danger (line 18) | danger(message: string) { FILE: packages/app/src/hooks/useStore.tsx function useStore (line 4) | function useStore() { function useUser (line 8) | function useUser() { function useSelfId (line 12) | function useSelfId() { function useIsLogin (line 17) | function useIsLogin() { function useIsAdmin (line 21) | function useIsAdmin() { function useTheme (line 26) | function useTheme() { function useLinkmans (line 36) | function useLinkmans() { function useFocusLinkman (line 41) | function useFocusLinkman() { function useFocus (line 50) | function useFocus() { FILE: packages/app/src/pages/Chat/Chat.tsx function Chat (line 64) | function Chat() { FILE: packages/app/src/pages/Chat/ChatBackButton.tsx function ChatBackButton (line 5) | function ChatBackButton() { FILE: packages/app/src/pages/Chat/ChatRightButton.tsx function ChatRightButton (line 7) | function ChatRightButton() { FILE: packages/app/src/pages/Chat/ImageMessage.tsx type Props (line 10) | type Props = { function ImageMessage (line 17) | function ImageMessage({ FILE: packages/app/src/pages/Chat/Input.tsx type Props (line 29) | type Props = { function Input (line 33) | function Input({ onHeightChange }: Props) { FILE: packages/app/src/pages/Chat/InviteMessage.tsx type Props (line 10) | type Props = { function InviteMessage (line 15) | function InviteMessage({ message, isSelf }: Props) { FILE: packages/app/src/pages/Chat/Message.tsx type Props (line 32) | type Props = { function Message (line 40) | function Message({ FILE: packages/app/src/pages/Chat/MessageList.tsx type Props (line 20) | type Props = { function MessageList (line 29) | function MessageList({ $scrollView }: Props) { FILE: packages/app/src/pages/Chat/SystemMessage.tsx type Props (line 7) | type Props = { function SystemMessage (line 11) | function SystemMessage({ message }: Props) { FILE: packages/app/src/pages/Chat/TextMessage.tsx type Props (line 8) | type Props = { function TextMessage (line 13) | function TextMessage({ message, isSelf }: Props) { FILE: packages/app/src/pages/ChatList/ChatList.tsx function ChatList (line 13) | function ChatList() { FILE: packages/app/src/pages/ChatList/ChatListRightButton.tsx function ChatListRightButton (line 9) | function ChatListRightButton() { FILE: packages/app/src/pages/ChatList/Linkman.tsx type Props (line 13) | type Props = { function Linkman (line 24) | function Linkman({ FILE: packages/app/src/pages/ChatList/SelfInfo.tsx function SelfInfo (line 7) | function SelfInfo() { FILE: packages/app/src/pages/GroupInfo/GroupInfo.tsx type Props (line 12) | type Props = { function GroupInfo (line 21) | function GroupInfo({ group }: Props) { FILE: packages/app/src/pages/GroupProfile/GroupProfile.tsx function GroupProfile (line 12) | function GroupProfile() { FILE: packages/app/src/pages/LoginSignup/Base.tsx type Props (line 8) | type Props = { function Base (line 15) | function Base({ FILE: packages/app/src/pages/LoginSignup/Login.tsx function Login (line 13) | function Login() { FILE: packages/app/src/pages/LoginSignup/Signup.tsx function Signup (line 13) | function Signup() { FILE: packages/app/src/pages/Other/Other.tsx function getIsNight (line 26) | function getIsNight() { function Other (line 31) | function Other() { FILE: packages/app/src/pages/Other/PrivacyPolicy.tsx type Props (line 9) | type Props = { function PrivacyPolicy (line 14) | function PrivacyPolicy({ visible, onClose }: Props) { FILE: packages/app/src/pages/Other/Sponsor.tsx type Props (line 6) | type Props = { function Sponsor (line 12) | function Sponsor({ visible, onClose, onOK }: Props) { FILE: packages/app/src/pages/SearchResult/SearchResult.tsx type Props (line 8) | type Props = { function SearchResult (line 22) | function SearchResult({ groups, users }: Props) { FILE: packages/app/src/pages/UserInfo/UserInfo.tsx type Props (line 25) | type Props = { function UserInfo (line 34) | function UserInfo({ user }: Props) { FILE: packages/app/src/service.ts function saveUsername (line 4) | function saveUsername(username: string) { function register (line 16) | async function register( function login (line 47) | async function login( function loginByToken (line 77) | async function loginByToken( function guest (line 108) | async function guest(os = '', browser = '', environment = '') { function changeAvatar (line 120) | async function changeAvatar(avatar: string) { function changePassword (line 130) | async function changePassword(oldPassword: string, newPassword: string) { function changeUsername (line 142) | async function changeUsername(username: string) { function changeGroupName (line 154) | async function changeGroupName(groupId: string, name: string) { function changeGroupAvatar (line 164) | async function changeGroupAvatar(groupId: string, avatar: string) { function createGroup (line 173) | async function createGroup(name: string) { function deleteGroup (line 182) | async function deleteGroup(groupId: string) { function joinGroup (line 191) | async function joinGroup(groupId: string) { function leaveGroup (line 200) | async function leaveGroup(groupId: string) { function addFriend (line 209) | async function addFriend(userId: string) { function deleteFriend (line 218) | async function deleteFriend(userId: string) { function getLinkmanHistoryMessages (line 228) | async function getLinkmanHistoryMessages( function getDefaultGroupHistoryMessages (line 243) | async function getDefaultGroupHistoryMessages(existCount: number) { function search (line 254) | async function search(keywords: string) { function searchExpression (line 263) | async function searchExpression(keywords: string) { function sendMessage (line 274) | async function sendMessage(to: string, type: string, content: string) { function deleteMessage (line 282) | async function deleteMessage(messageId: string) { function getGroupOnlineMembers (line 291) | async function getGroupOnlineMembers(groupId: string) { function getDefaultGroupOnlineMembers (line 299) | async function getDefaultGroupOnlineMembers() { function sealUser (line 308) | async function sealUser(username: string) { function sealIp (line 317) | async function sealIp(ip: string) { function sealUserOnlineIp (line 326) | async function sealUserOnlineIp(userId: string) { function getSealList (line 334) | async function getSealList() { function resetUserPassword (line 343) | async function resetUserPassword(username: string) { function setUserTag (line 353) | async function setUserTag(username: string, tag: string) { function getUserIps (line 362) | async function getUserIps(userId: string) { function getUserOnlineStatus (line 367) | async function getUserOnlineStatus(userId: string) { function setNotificationToken (line 372) | async function setNotificationToken(token: string) { FILE: packages/app/src/socket.ts function fetch (line 44) | function fetch( function guest (line 63) | async function guest() { FILE: packages/app/src/state/action.ts function connect (line 41) | function connect() { function disconnect (line 47) | function disconnect() { function setUser (line 54) | function setUser(user: any) { function setLinkmansLastMessages (line 86) | function setLinkmansLastMessages( function setGuest (line 94) | function setGuest(defaultGroup: Group) { function logout (line 106) | function logout() { function setAvatar (line 111) | function setAvatar(avatar: string) { function updateUserProperty (line 118) | function updateUserProperty(key: string, value: any) { function addLinkmanMessage (line 126) | function addLinkmanMessage(linkmanId: string, message: Message) { function deleteLinkmanMessage (line 134) | function deleteLinkmanMessage(linkmanId: string, messageId: string) { function addLinkmanHistoryMessages (line 142) | function addLinkmanHistoryMessages(linkmanId: string, messages: Message[... function updateSelfMessage (line 149) | function updateSelfMessage( function setFocus (line 162) | function setFocus(linkmanId: string) { function setGroupMembers (line 168) | function setGroupMembers(groupId: string, members: Group['members']) { function setGroupAvatar (line 176) | function setGroupAvatar(groupId: string, avatar: string) { function updateGroupProperty (line 184) | function updateGroupProperty(groupId: string, key: string, value: any) { function updateFriendProperty (line 192) | function updateFriendProperty(userId: string, key: string, value: any) { function addLinkman (line 200) | function addLinkman(linkman: Linkman, focus = false) { function removeLinkman (line 212) | function removeLinkman(linkmanId: string) { function setFriend (line 218) | function setFriend(linkmanId: string, from: Friend['from'], to: Friend['... function loading (line 227) | function loading(text: string) { FILE: packages/app/src/state/reducer.ts function mergeLinkmans (line 30) | function mergeLinkmans( FILE: packages/app/src/types/redux.ts type ConnectAction (line 2) | type ConnectAction = { type SetUserAction (line 8) | type SetUserAction = { type SetLinkmanMessagesAction (line 15) | type SetLinkmanMessagesAction = { type SetGuestAction (line 27) | type SetGuestAction = { type LogoutAction (line 33) | type LogoutAction = { type UpdateUserPropertyAction (line 38) | type UpdateUserPropertyAction = { type AddlinkmanMessageAction (line 45) | type AddlinkmanMessageAction = { type DeleteLinkmanMessageAction (line 52) | type DeleteLinkmanMessageAction = { type AddLinkmanHistoryMessagesAction (line 59) | type AddLinkmanHistoryMessagesAction = { type UpdateSelfMessageAction (line 66) | type UpdateSelfMessageAction = { type SetFocusAction (line 74) | type SetFocusAction = { type UpdateGroupPropertyAction (line 80) | type UpdateGroupPropertyAction = { type UpdateFriendPropertyAction (line 88) | type UpdateFriendPropertyAction = { type AddLinkmanAction (line 96) | type AddLinkmanAction = { type RemoveLinkmanAction (line 103) | type RemoveLinkmanAction = { type SetFriendAction (line 109) | type SetFriendAction = { type UpdateUIPropertyAction (line 117) | type UpdateUIPropertyAction = { type ActionTypes (line 123) | type ActionTypes = type Message (line 142) | type Message = { type Group (line 160) | type Group = { type Friend (line 182) | type Friend = { type Temporary (line 199) | type Temporary = { type Linkman (line 210) | type Linkman = Group | Friend | Temporary; type User (line 212) | type User = { type State (line 222) | type State = { FILE: packages/app/src/types/socket.ts type Socket (line 1) | type Socket = { FILE: packages/app/src/utils/convertMessage.ts function convertSystemMessage (line 20) | function convertSystemMessage(message: Message) { function convertMessageHtml (line 66) | function convertMessageHtml(message: Message) { function convertMessage (line 75) | function convertMessage(message: Message) { FILE: packages/app/src/utils/fetch.ts function fetch (line 4) | function fetch( FILE: packages/app/src/utils/getFriendId.ts function getFriendId (line 1) | function getFriendId(userId1: string, userId2: string) { FILE: packages/app/src/utils/getRandomColor.ts type ColorMode (line 3) | type ColorMode = 'dark' | 'bright' | 'light' | 'random'; function getRandomColor (line 9) | function getRandomColor(seed: string, luminosity: ColorMode = 'dark') { type Cache (line 16) | type Cache = { function getPerRandomColor (line 27) | function getPerRandomColor( FILE: packages/app/src/utils/linkman.ts function formatLinkmanName (line 3) | function formatLinkmanName(linkman: Linkman) { FILE: packages/app/src/utils/storage.ts function getStorageValue (line 3) | async function getStorageValue(key: string) { function setStorageValue (line 7) | async function setStorageValue(key: string, value: string) { function removeStorageValue (line 11) | async function removeStorageValue(key: string) { FILE: packages/app/src/utils/time.ts method isToday (line 2) | isToday(time1: Date, time2: Date) { method isYesterday (line 9) | isYesterday(time1: Date, time2: Date) { method isSameYear (line 18) | isSameYear(time1: Date, time2: Date) { method getHourMinute (line 21) | getHourMinute(time: Date) { method getMonthDate (line 28) | getMonthDate(time: Date) { method getYearMonthDate (line 31) | getYearMonthDate(time: Date) { FILE: packages/app/src/utils/uploadFile.ts function uploadFile (line 8) | async function uploadFile( function getOSSFileUrl (line 24) | function getOSSFileUrl(url: string | number = '', process = '') { FILE: packages/bin/scripts/deleteMessages.ts function deleteMessages (line 10) | async function deleteMessages() { function run (line 57) | async function run() { FILE: packages/bin/scripts/deleteTodayRegisteredUsers.ts function deleteTodayRegisteredUsers (line 11) | async function deleteTodayRegisteredUsers() { function run (line 49) | async function run() { FILE: packages/bin/scripts/deleteUser.ts function deleteUser (line 12) | async function deleteUser(userIdOrName: string, confirm = true) { function run (line 112) | async function run() { FILE: packages/bin/scripts/doctor.ts function doctor (line 10) | async function doctor() { function run (line 53) | async function run() { FILE: packages/bin/scripts/fixUsersAvatar.ts function fixUsersAvatar (line 6) | async function fixUsersAvatar( function run (line 44) | async function run() { FILE: packages/bin/scripts/getUserId.ts function getUserId (line 5) | async function getUserId(username: string) { function run (line 24) | async function run() { FILE: packages/bin/scripts/register.ts function register (line 15) | async function register(username: string, password: string) { function run (line 74) | async function run() { FILE: packages/bin/scripts/updateDefaultGroupName.ts function updateDefaultGroupName (line 5) | async function updateDefaultGroupName(newName: string) { function run (line 30) | async function run() { FILE: packages/database/mongoose/initMongoDB.ts function initMongoDB (line 13) | function initMongoDB() { FILE: packages/database/mongoose/models/friend.ts type FriendDocument (line 17) | interface FriendDocument extends Document { FILE: packages/database/mongoose/models/group.ts type GroupDocument (line 35) | interface GroupDocument extends Document { FILE: packages/database/mongoose/models/history.ts type HistoryDocument (line 18) | interface HistoryDocument extends Document { function createOrUpdateHistory (line 33) | async function createOrUpdateHistory( FILE: packages/database/mongoose/models/message.ts type MessageDocument (line 31) | interface MessageDocument extends Document { type SendMessageData (line 54) | interface SendMessageData { function handleInviteV2Message (line 60) | async function handleInviteV2Message(message: SendMessageData) { function handleInviteV2Messages (line 80) | async function handleInviteV2Messages(messages: SendMessageData[]) { FILE: packages/database/mongoose/models/notification.ts type NotificationDocument (line 16) | interface NotificationDocument extends Document { FILE: packages/database/mongoose/models/socket.ts type SocketDocument (line 30) | interface SocketDocument extends Document { FILE: packages/database/mongoose/models/user.ts type UserDocument (line 32) | interface UserDocument extends Document { FILE: packages/database/redis/initRedis.ts function initRedis (line 6) | function initRedis() { function set (line 25) | async function set(key: string, value: string, expireTime = Infinity) { function has (line 34) | async function has(key: string) { function getNewUserKey (line 39) | function getNewUserKey(userId: string) { function getNewRegisteredUserIpKey (line 43) | function getNewRegisteredUserIpKey(ip: string) { function getSealIpKey (line 49) | function getSealIpKey(ip: string) { function getAllSealIp (line 53) | async function getAllSealIp() { function getSealUserKey (line 58) | function getSealUserKey(user: string) { function getAllSealUser (line 62) | async function getAllSealUser() { FILE: packages/docs/src/pages/index.js function Feature (line 34) | function Feature({ imageUrl, title, description }) { function Description (line 70) | function Description({ title, content, image, index }) { function DeployByYourself (line 86) | function DeployByYourself({ url }) { function Home (line 105) | function Home() { FILE: packages/i18n/node.index.ts function i18n (line 13) | function i18n(key: keyof typeof enUS | keyof typeof zhCN) { FILE: packages/server/src/middlewares/frequency.ts constant CALL_SERVICE_FREQUENTLY (line 8) | const CALL_SERVICE_FREQUENTLY = '发消息过于频繁, 请冷静一会再试'; constant NEW_USER_CALL_SERVICE_FREQUENTLY (line 9) | const NEW_USER_CALL_SERVICE_FREQUENTLY = type Options (line 18) | type Options = { function frequency (line 28) | function frequency( FILE: packages/server/src/middlewares/isAdmin.ts constant YOU_ARE_NOT_ADMINISTRATOR (line 4) | const YOU_ARE_NOT_ADMINISTRATOR = '你不是管理员'; function isAdmin (line 9) | function isAdmin(socket: Socket) { FILE: packages/server/src/middlewares/isLogin.ts constant PLEASE_LOGIN (line 3) | const PLEASE_LOGIN = '请登录后再试'; function isLogin (line 8) | function isLogin(socket: Socket) { FILE: packages/server/src/middlewares/registerRoutes.ts function defaultCallback (line 6) | function defaultCallback() { function registerRoutes (line 10) | function registerRoutes(socket: Socket, routes: Routes) { FILE: packages/server/src/middlewares/seal.ts function seal (line 13) | function seal(socket: Socket) { FILE: packages/server/src/routes/group.ts function getGroupOnlineMembersHelper (line 17) | async function getGroupOnlineMembersHelper(group: GroupDocument) { function createGroup (line 42) | async function createGroup(ctx: Context<{ name: string }>) { function joinGroup (line 86) | async function joinGroup(ctx: Context<{ groupId: string }>) { function leaveGroup (line 127) | async function leaveGroup(ctx: Context<{ groupId: string }>) { function getGroupOnlineMembersWrapperV2 (line 160) | function getGroupOnlineMembersWrapperV2() { function getGroupOnlineMembers (line 212) | async function getGroupOnlineMembers( function getDefaultGroupOnlineMembersWrapper (line 223) | function getDefaultGroupOnlineMembersWrapper() { function changeGroupAvatar (line 246) | async function changeGroupAvatar( function changeGroupName (line 270) | async function changeGroupName( function deleteGroup (line 301) | async function deleteGroup(ctx: Context<{ groupId: string }>) { function getGroupBasicInfo (line 322) | async function getGroupBasicInfo(ctx: Context<{ groupId: string }>) { FILE: packages/server/src/routes/history.ts function updateHistory (line 8) | async function updateHistory( FILE: packages/server/src/routes/message.ts constant RPS (line 39) | const RPS = ['石头', '剪刀', '布']; function pushNotification (line 41) | async function pushNotification( function sendMessage (line 83) | async function sendMessage(ctx: Context) { function getLinkmansLastMessages (line 247) | async function getLinkmansLastMessages( function getLinkmansLastMessagesV2 (line 280) | async function getLinkmansLastMessagesV2( function getLinkmanHistoryMessages (line 354) | async function getLinkmanHistoryMessages( function getDefaultGroupHistoryMessages (line 382) | async function getDefaultGroupHistoryMessages( function deleteMessage (line 413) | async function deleteMessage(ctx: Context<{ messageId: string }>) { FILE: packages/server/src/routes/notification.ts function setNotificationToken (line 5) | async function setNotificationToken(ctx: Context<{ token: string }>) { FILE: packages/server/src/routes/system.ts function search (line 34) | async function search(ctx: Context<{ keywords: string }>) { function searchExpression (line 68) | async function searchExpression( function getBaiduToken (line 127) | async function getBaiduToken() { function sealUser (line 147) | async function sealUser(ctx: Context<{ username: string }>) { function getSealList (line 170) | async function getSealList() { function sealIp (line 189) | async function sealIp(ctx: Context<{ ip: string }>) { function sealUserOnlineIp (line 207) | async function sealUserOnlineIp(ctx: Context<{ userId: string }>) { type STSResult (line 241) | type STSResult = { function getSTS (line 252) | async function getSTS(): Promise { function uploadFile (line 285) | async function uploadFile( function toggleSendMessage (line 332) | async function toggleSendMessage(ctx: Context<{ enable: boolean }>) { function toggleNewUserSendMessage (line 340) | async function toggleNewUserSendMessage( function getSystemConfig (line 350) | async function getSystemConfig() { FILE: packages/server/src/routes/user.ts type Environment (line 28) | interface Environment { function generateToken (line 42) | function generateToken(user: string, environment: string) { function handleNewUser (line 57) | async function handleNewUser(user: UserDocument, ip = '') { function getUserNotificationTokens (line 76) | async function getUserNotificationTokens(user: UserDocument) { function register (line 85) | async function register( function login (line 173) | async function login( function loginByToken (line 245) | async function loginByToken( function guest (line 329) | async function guest(ctx: Context) { function changeAvatar (line 377) | async function changeAvatar(ctx: Context<{ avatar: string }>) { function addFriend (line 395) | async function addFriend(ctx: Context<{ userId: string }>) { function deleteFriend (line 426) | async function deleteFriend(ctx: Context<{ userId: string }>) { function changePassword (line 443) | async function changePassword( function changeUsername (line 472) | async function changeUsername(ctx: Context<{ username: string }>) { function resetUserPassword (line 496) | async function resetUserPassword(ctx: Context<{ username: string }>) { function setUserTag (line 522) | async function setUserTag( function getUserIps (line 555) | async function getUserIps( function getUserOnlineStatusWrapper (line 568) | function getUserOnlineStatusWrapper() { FILE: packages/server/src/types/server.d.ts type Context (line 1) | interface Context { type RouteHandler (line 14) | interface RouteHandler { type Routes (line 18) | type Routes = Record; type MiddlewareArgs (line 20) | type MiddlewareArgs = Array; type MiddlewareNext (line 22) | type MiddlewareNext = () => void; type SendMessageData (line 24) | interface SendMessageData { FILE: packages/server/test/helpers/middleware.ts function getMiddlewareParams (line 1) | function getMiddlewareParams(event = 'login', data = {}) { FILE: packages/utils/compressImage.ts function compressImage (line 7) | function compressImage( FILE: packages/utils/const.ts constant SEAL_TEXT (line 2) | const SEAL_TEXT = '你已经被关进小黑屋中, 请反思后再试'; constant SEAL_USER_TIMEOUT (line 5) | const SEAL_USER_TIMEOUT = 1000 * 60 * 10; constant SEAL_IP_TIMEOUT (line 8) | const SEAL_IP_TIMEOUT = 1000 * 60 * 60 * 6; constant TRANSPARENT_IMAGE (line 11) | const TRANSPARENT_IMAGE = constant SALT_ROUNDS (line 15) | const SALT_ROUNDS = 10; constant NAME_REGEXP (line 19) | const NAME_REGEXP = /^([0-9a-zA-Z]{1,2}|[\u4e00-\u9eff]|[\u3040-\u309Fー]... FILE: packages/utils/convertMessage.ts function convertSystemMessage (line 18) | function convertSystemMessage(message: any) { function convertMessage (line 51) | function convertMessage(message: any) { FILE: packages/utils/getFriendId.ts function getFriendId (line 7) | function getFriendId(userId1: string, userId2: string) { FILE: packages/utils/getRandomAvatar.ts function getRandomAvatar (line 7) | function getRandomAvatar() { function getDefaultAvatar (line 15) | function getDefaultAvatar() { FILE: packages/utils/getRandomColor.ts type ColorMode (line 3) | type ColorMode = 'dark' | 'bright' | 'light' | 'random'; function getRandomColor (line 9) | function getRandomColor(seed: string, luminosity: ColorMode = 'dark') { type Cache (line 16) | type Cache = { function getPerRandomColor (line 27) | function getPerRandomColor( FILE: packages/utils/sleep.ts function sleep (line 1) | function sleep(duration = 200) { FILE: packages/utils/socket.ts function getSocketIp (line 3) | function getSocketIp(socket: Socket) { FILE: packages/utils/time.ts method isToday (line 2) | isToday(time1: Date, time2: Date) { method isYesterday (line 9) | isYesterday(time1: Date, time2: Date) { method getHourMinute (line 18) | getHourMinute(time: Date) { method getMonthDate (line 25) | getMonthDate(time: Date) { FILE: packages/utils/url.ts type UrlParams (line 1) | interface UrlParams { function addParam (line 6) | function addParam(url: string, params: UrlParams) { FILE: packages/utils/xss.ts function processXss (line 7) | function processXss(text: string) { FILE: packages/web/src/App.tsx function getWidthPercent (line 26) | function getWidthPercent() { function getHeightPercent (line 45) | function getHeightPercent() { function App (line 57) | function App() { FILE: packages/web/src/components/Avatar.tsx type Props (line 6) | type Props = { function Avatar (line 19) | function Avatar({ FILE: packages/web/src/components/Button.tsx type Props (line 19) | type Props = { function Button (line 29) | function Button({ FILE: packages/web/src/components/IconButton.tsx type Props (line 5) | type Props = { function IconButton (line 15) | function IconButton({ FILE: packages/web/src/components/Input.tsx type InputProps (line 6) | interface InputProps { function Input (line 16) | function Input(props: InputProps) { FILE: packages/web/src/components/Message.tsx function showMessage (line 7) | function showMessage(text: string, duration = 1500, type = 'success') { method success (line 22) | success(text: string, duration = 1.5) { method error (line 25) | error(text: string, duration = 1.5) { method warning (line 28) | warning(text: string, duration = 1.5) { method info (line 31) | info(text: string, duration = 1.5) { FILE: packages/web/src/hooks/useAction.ts function useAction (line 9) | function useAction() { FILE: packages/web/src/hooks/useAero.ts function useAero (line 7) | function useAero() { FILE: packages/web/src/hooks/useIsLogin.ts function useIsLogin (line 7) | function useIsLogin() { FILE: packages/web/src/hooks/useStore.ts function useStore (line 4) | function useStore() { function useFocusLinkman (line 8) | function useFocusLinkman(): Linkman | null { function useSelfId (line 17) | function useSelfId() { FILE: packages/web/src/localStorage.ts type LocalStorageKey (line 5) | enum LocalStorageKey { function getTextValue (line 25) | function getTextValue(key: string, defaultValue: string) { function getSwitchValue (line 35) | function getSwitchValue(key: string, defaultValue: boolean = true) { function getData (line 43) | function getData() { FILE: packages/web/src/modules/Chat/Chat.tsx function Chat (line 23) | function Chat() { FILE: packages/web/src/modules/Chat/ChatInput.tsx function ChatInput (line 62) | function ChatInput() { FILE: packages/web/src/modules/Chat/CodeEditor.tsx type LoadedLanguage (line 28) | interface LoadedLanguage { type CodeEditorProps (line 33) | interface CodeEditorProps { function CodeEditor (line 39) | function CodeEditor(props: CodeEditorProps) { FILE: packages/web/src/modules/Chat/Expression.tsx type ExpressionProps (line 19) | interface ExpressionProps { function Expression (line 24) | function Expression(props: ExpressionProps) { FILE: packages/web/src/modules/Chat/GroupManagePanel.tsx type GroupManagePanelProps (line 25) | interface GroupManagePanelProps { function GroupManagePanel (line 34) | function GroupManagePanel(props: GroupManagePanelProps) { FILE: packages/web/src/modules/Chat/HeaderBar.tsx type Props (line 25) | type Props = { function HeaderBar (line 37) | function HeaderBar(props: Props) { FILE: packages/web/src/modules/Chat/Message/CodeDialog.tsx type CodeDialogProps (line 8) | interface CodeDialogProps { function CodeDialog (line 15) | function CodeDialog(props: CodeDialogProps) { FILE: packages/web/src/modules/Chat/Message/CodeMessage.tsx type LanguageMap (line 11) | type LanguageMap = { type CodeMessageProps (line 32) | interface CodeMessageProps { function CodeMessage (line 36) | function CodeMessage(props: CodeMessageProps) { FILE: packages/web/src/modules/Chat/Message/FileMessage.tsx type Props (line 35) | type Props = { function FileMessage (line 40) | function FileMessage({ file, percent }: Props) { FILE: packages/web/src/modules/Chat/Message/ImageMessage.tsx type ImageMessageProps (line 15) | interface ImageMessageProps { function ImageMessage (line 21) | function ImageMessage(props: ImageMessageProps) { FILE: packages/web/src/modules/Chat/Message/InviteMessageV2.tsx type InviteMessageProps (line 8) | interface InviteMessageProps { function InviteMessage (line 12) | function InviteMessage(props: InviteMessageProps) { FILE: packages/web/src/modules/Chat/Message/Message.tsx type MessageProps (line 28) | interface MessageProps { type MessageState (line 47) | interface MessageState { class Message (line 56) | @pureRender method constructor (line 60) | constructor(props: MessageProps) { method componentDidMount (line 67) | componentDidMount() { method handleClickAvatar (line 123) | handleClickAvatar(showUserInfo: (userinfo: any) => void) { method formatTime (line 134) | formatTime() { method renderContent (line 149) | renderContent() { method render (line 189) | render() { FILE: packages/web/src/modules/Chat/Message/SystemMessage.tsx type SystemMessageProps (line 4) | interface SystemMessageProps { function SystemMessage (line 9) | function SystemMessage(props: SystemMessageProps) { FILE: packages/web/src/modules/Chat/Message/TextMessage.tsx type TextMessageProps (line 7) | interface TextMessageProps { function TextMessage (line 11) | function TextMessage(props: TextMessageProps) { FILE: packages/web/src/modules/Chat/Message/UrlMessage.tsx type UrlMessageProps (line 3) | interface UrlMessageProps { function UrlMessage (line 7) | function UrlMessage(props: UrlMessageProps) { FILE: packages/web/src/modules/Chat/MessageList.tsx function MessageList (line 40) | function MessageList() { FILE: packages/web/src/modules/FunctionBarAndLinkmanList/CreateGroup.tsx type CreateGroupProps (line 10) | interface CreateGroupProps { function CreateGroup (line 15) | function CreateGroup(props: CreateGroupProps) { FILE: packages/web/src/modules/FunctionBarAndLinkmanList/FunctionBar.tsx type SearchResult (line 19) | type SearchResult = { function FunctionBar (line 24) | function FunctionBar() { FILE: packages/web/src/modules/FunctionBarAndLinkmanList/FunctionBarAndLinkmanList.tsx function FunctionBarAndLinkmanList (line 13) | function FunctionBarAndLinkmanList() { FILE: packages/web/src/modules/FunctionBarAndLinkmanList/Linkman.tsx type LinkmanProps (line 15) | interface LinkmanProps { function Linkman (line 25) | function Linkman(props: LinkmanProps) { FILE: packages/web/src/modules/FunctionBarAndLinkmanList/LinkmanList.tsx function LinkmanList (line 9) | function LinkmanList() { FILE: packages/web/src/modules/GroupInfo.tsx type GroupInfoProps (line 14) | interface GroupInfoProps { function GroupInfo (line 25) | function GroupInfo(props: GroupInfoProps) { FILE: packages/web/src/modules/InviteInfo.tsx type GroupBasicInfo (line 14) | type GroupBasicInfo = { function InviteInfo (line 20) | function InviteInfo() { FILE: packages/web/src/modules/LoginAndRegister/Login.tsx function Login (line 16) | function Login() { FILE: packages/web/src/modules/LoginAndRegister/LoginAndRegister.tsx function LoginAndRegister (line 17) | function LoginAndRegister() { FILE: packages/web/src/modules/LoginAndRegister/Register.tsx function Register (line 15) | function Register() { FILE: packages/web/src/modules/Sidebar/About.tsx type AboutProps (line 7) | interface AboutProps { function About (line 12) | function About(props: AboutProps) { FILE: packages/web/src/modules/Sidebar/Admin.tsx type SystemConfig (line 30) | type SystemConfig = { type AdminProps (line 35) | interface AdminProps { function Admin (line 40) | function Admin(props: AdminProps) { FILE: packages/web/src/modules/Sidebar/Download.tsx type DownloadProps (line 8) | interface DownloadProps { function Download (line 13) | function Download(props: DownloadProps) { FILE: packages/web/src/modules/Sidebar/OnlineStatus.tsx type OnlineStatusProps (line 5) | interface OnlineStatusProps { function OnlineStatus (line 11) | function OnlineStatus(props: OnlineStatusProps) { FILE: packages/web/src/modules/Sidebar/Reward.tsx type RewardProps (line 8) | interface RewardProps { function Reward (line 13) | function Reward(props: RewardProps) { FILE: packages/web/src/modules/Sidebar/SelfInfo.tsx type SelfInfoProps (line 22) | interface SelfInfoProps { function SelfInfo (line 27) | function SelfInfo(props: SelfInfoProps) { FILE: packages/web/src/modules/Sidebar/Setting.tsx type SettingProps (line 29) | interface SettingProps { type Color (line 34) | type Color = { function Setting (line 42) | function Setting(props: SettingProps) { FILE: packages/web/src/modules/Sidebar/Sidebar.tsx function Sidebar (line 34) | function Sidebar() { FILE: packages/web/src/modules/UserInfo.tsx type UserInfoProps (line 22) | interface UserInfoProps { function UserInfo (line 34) | function UserInfo(props: UserInfoProps) { FILE: packages/web/src/service.ts function saveUsername (line 4) | function saveUsername(username: string) { function register (line 16) | async function register( function login (line 47) | async function login( function loginByToken (line 77) | async function loginByToken( function guest (line 108) | async function guest(os = '', browser = '', environment = '') { function changeAvatar (line 120) | async function changeAvatar(avatar: string) { function changePassword (line 130) | async function changePassword(oldPassword: string, newPassword: string) { function changeUsername (line 142) | async function changeUsername(username: string) { function changeGroupName (line 154) | async function changeGroupName(groupId: string, name: string) { function changeGroupAvatar (line 164) | async function changeGroupAvatar(groupId: string, avatar: string) { function createGroup (line 173) | async function createGroup(name: string) { function deleteGroup (line 182) | async function deleteGroup(groupId: string) { function joinGroup (line 191) | async function joinGroup(groupId: string) { function leaveGroup (line 200) | async function leaveGroup(groupId: string) { function addFriend (line 209) | async function addFriend(userId: string) { function deleteFriend (line 218) | async function deleteFriend(userId: string) { function getLinkmansLastMessagesV2 (line 227) | async function getLinkmansLastMessagesV2(linkmanIds: string[]) { function getLinkmanHistoryMessages (line 239) | async function getLinkmanHistoryMessages( function getDefaultGroupHistoryMessages (line 254) | async function getDefaultGroupHistoryMessages(existCount: number) { function search (line 265) | async function search(keywords: string) { function searchExpression (line 274) | async function searchExpression(keywords: string) { function sendMessage (line 285) | async function sendMessage(to: string, type: string, content: string) { function deleteMessage (line 293) | async function deleteMessage(messageId: string) { function getDefaultGroupOnlineMembers (line 338) | async function getDefaultGroupOnlineMembers() { function sealUser (line 347) | async function sealUser(username: string) { function sealIp (line 356) | async function sealIp(ip: string) { function sealUserOnlineIp (line 365) | async function sealUserOnlineIp(userId: string) { function getSealList (line 373) | async function getSealList() { function getSystemConfig (line 378) | async function getSystemConfig() { function resetUserPassword (line 387) | async function resetUserPassword(username: string) { function setUserTag (line 397) | async function setUserTag(username: string, tag: string) { function getUserIps (line 406) | async function getUserIps(userId: string) { function getUserOnlineStatus (line 411) | async function getUserOnlineStatus(userId: string) { function updateHistory (line 416) | async function updateHistory(linkmanId: string, messageId: string) { function toggleSendMessage (line 421) | async function toggleSendMessage(enable: boolean) { function toggleNewUserSendMessage (line 426) | async function toggleNewUserSendMessage(enable: boolean) { FILE: packages/web/src/socket.ts function loginFailback (line 34) | async function loginFailback() { FILE: packages/web/src/state/action.ts type ActionTypes (line 4) | enum ActionTypes { type SetGuestPayload (line 43) | type SetGuestPayload = Group; type SetUserPayload (line 45) | type SetUserPayload = { type UpdateUserInfoPayload (line 55) | type UpdateUserInfoPayload = Object; type SetStatusPayload (line 57) | interface SetStatusPayload { type SetAvatarPayload (line 62) | type SetAvatarPayload = string; type AddLinkmanPayload (line 64) | interface AddLinkmanPayload { type SetFocusPayload (line 69) | type SetFocusPayload = string; type SetLinkmansLastMessagesPayload (line 71) | interface SetLinkmansLastMessagesPayload { type AddLinkmanHistoryMessagesPayload (line 78) | interface AddLinkmanHistoryMessagesPayload { type AddLinkmanMessagePayload (line 83) | interface AddLinkmanMessagePayload { type SetLinkmanPropertyPayload (line 88) | interface SetLinkmanPropertyPayload { type RemoveLinkmanPayload (line 94) | type RemoveLinkmanPayload = string; type UpdateMessagePayload (line 96) | interface UpdateMessagePayload { type DeleteMessagePayload (line 102) | interface DeleteMessagePayload { type Action (line 108) | interface Action { FILE: packages/web/src/state/reducer.ts type Message (line 21) | interface Message { type MessagesMap (line 38) | interface MessagesMap { type GroupMember (line 42) | interface GroupMember { type Group (line 54) | interface Group { type Friend (line 64) | interface Friend { type Linkman (line 72) | interface Linkman extends Group, User { type LinkmansMap (line 78) | interface LinkmansMap { type User (line 83) | interface User { type State (line 91) | interface State { function getLinkmansMap (line 150) | function getLinkmansMap(linkmans: Linkman[]) { function getMessagesMap (line 161) | function getMessagesMap(messages: Message[]) { function deleteObjectKeys (line 173) | function deleteObjectKeys(obj: T, keys: string[]): T { function deleteObjectKey (line 190) | function deleteObjectKey(obj: T, key: string): T { function initLinkmanFields (line 199) | function initLinkmanFields(linkman: Linkman, type: string) { function transformGroup (line 209) | function transformGroup(group: Linkman): Linkman { function transformFriend (line 220) | function transformFriend(friend: Linkman): Linkman { function transformTemporary (line 234) | function transformTemporary(temporary: Linkman): Linkman { function reducer (line 265) | function reducer(state: State = initialState, action: Action): State { FILE: packages/web/src/themes.ts type Themes (line 4) | type Themes = { FILE: packages/web/src/types/index.d.ts type Window (line 51) | interface Window { FILE: packages/web/src/utils/fetch.ts function fetch (line 9) | function fetch( FILE: packages/web/src/utils/getRandomHuaji.ts type Huaji (line 39) | type Huaji = { function getRandomHuaji (line 84) | function getRandomHuaji() { FILE: packages/web/src/utils/inobounce.ts function inobounce (line 5) | function inobounce(targetElement: HTMLElement) { FILE: packages/web/src/utils/notification.ts function notification (line 1) | function notification( FILE: packages/web/src/utils/playSound.ts type Sounds (line 8) | type Sounds = { function play (line 32) | async function play() { function playSound (line 46) | function playSound(type = 'default') { FILE: packages/web/src/utils/readDiskFile.ts type ReadFileResult (line 1) | interface ReadFileResult { function readDiskFIle (line 19) | async function readDiskFIle( FILE: packages/web/src/utils/setCssVariable.ts function setCssVariable (line 6) | function setCssVariable(color: string, textColor: string) { FILE: packages/web/src/utils/uploadFile.ts function initOSS (line 6) | async function initOSS() { function getOSSFileUrl (line 38) | function getOSSFileUrl(url = '', process = '') { function uploadFile (line 60) | async function uploadFile( FILE: packages/web/src/utils/voice.ts function read (line 13) | async function read(text: string, cuid: string) { type Task (line 46) | type Task = { function handleTaskQueue (line 53) | async function handleTaskQueue() { method push (line 65) | push(text: string, cuid: string) {