{"version":3,"file":"js/37660-fdf4d635c9156d59fb62.js","mappings":"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","sources":["webpack://assistant/./frontend/packs/models/RoomManager.ts"],"sourcesContent":["import axios from \"axios\"\nimport AvailableScheduleTag from \"packs/models/AvailableScheduleTag\"\nimport Util from \"packs/utils/Util\"\nimport { DateTime, StringUnitLength } from \"luxon\"\nimport Notice from \"packs/models/Notice\"\nimport Room from \"packs/models/Room\"\nimport RoomMember from \"packs/models/RoomMember\"\nimport Appointment from \"packs/models/Appointment\"\nimport ActionCable from \"actioncable\"\nimport { funcName, Logger, sleep } from \"packs/common\"\nimport RoomMessage from \"packs/models/RoomMessage\"\nimport router from \"packs/pages/link/router\"\n\nimport RoomStorage from \"packs/models/RoomStorage\"\nimport PossibleDate from \"packs/models/PossibleDate\"\nimport SubscriptionManager from \"packs/models/SubscriptionManager\"\nimport NotificationControl from \"packs/utils/NotificationControl\"\nimport RoomTab from \"packs/models/RoomTab\"\nimport UserSetting from \"packs/models/UserSetting\"\nimport PossibleDatesManager from \"packs/models/PossibleDatesManager\"\nimport Refresher from \"packs/models/Refresher\"\nimport LocationTag from \"packs/models//LocationTag\"\nimport PlanOption from \"packs/models/PlanOption\"\nimport UserPermissionsOption from \"packs/models/UserPermissionsOption\"\nimport EmailDomain from \"packs/models/EmailDomain\"\nimport AddressBook from \"packs/models/AddressBook\"\nimport ContactListGroup from \"packs/models/ContactListGroup\"\nimport UserFile from \"packs/models/UserFile\"\nimport Organization from \"packs/models/Organization\"\nimport GroupTag from \"./GroupTag\"\nimport { ProgressFinisher, useProgress } from \"@marcoschulte/vue3-progress\"\nimport { reactive } from \"vue\"\nimport MessageTemplate from \"packs/models/MessageTemplate\"\nimport AstagsTab from \"packs/models/fetcher/AstagsTab\"\nimport Const from \"packs/utils/Const\"\nimport AssignForm from \"packs/models/AssignForm\"\nimport CustomNotification from \"packs/models/CustomNotification\"\nimport ParentRoomGroup from \"packs/models/ParentRoomGroup\"\n\nconst roomStorage = new RoomStorage()\n\ninterface RoomManager {\n rooms?: Room[]\n appointments?: Appointment[]\n openRooms: Room[]\n currentRoom?: Room\n currentAppointment?: Appointment\n currentInstantRoom: Room\n currentMessageRoom: Room\n defaultAstag?: AvailableScheduleTag\n astag: AvailableScheduleTag\n chukaiAstag: AvailableScheduleTag\n astags: AvailableScheduleTag[]\n shared_astags: AvailableScheduleTag[]\n wsConnection?: ActionCable.Connection\n memberDicPerRoom: { [key: string]: { [key: string]: RoomMember } }\n messagesPerRoom: any\n currentRoomMessages?: RoomMessage[]\n cable?: any\n currentAstagStatus?: string\n didConnectCal?: boolean\n did_connect_ms_cal: boolean\n did_connect_google_cal: boolean\n can_use_google_meet: boolean\n can_use_teams: boolean\n can_use_zoom: boolean\n calendar_account_name: string\n support_waaq: boolean\n tutorial_phase?: number\n contact_list_registration_type: string\n contact_list_expires_in_days: string\n confirmed_new_message: boolean\n confirmed_connect_cal: boolean\n confirmed_quick_vote_tutorial: boolean\n plan_option: PlanOption\n userInfo?: RoomMember\n user_setting: UserSetting\n organization: Organization\n fixed_this_month?: any[]\n fixed_last_month?: any[]\n fixed_owner_this_month?: any[]\n fixed_owner_last_month?: any[]\n namespace: string\n logo_url: string\n roomTabs: {}\n publishedNewRooms: any[]\n pdm: any\n refresher: any\n default_location: LocationTag\n showPlanOptionModalWithName: string\n email_domains: EmailDomain[]\n user_groups: any[]\n changeable_user_groups: any[]\n can_use_email_domain: boolean\n email_name: string\n hide_filled_fields: boolean\n address_book: AddressBook\n templates: MessageTemplate[]\n userFiles: UserFile[]\n loctags: LocationTag[]\n locationNames: string[]\n titles: string[]\n nextActionInRoomsDic: any\n isResetFormForOwnerUg: boolean\n guestKey: string\n downloadableFiles: UserFile[]\n my_notifications: any\n groupTags: GroupTag[]\n tabGroupTags: GroupTag[]\n progresses: ProgressFinisher[]\n astagsTab: AstagsTab\n sharedLocationsDic: { [key: string]: LocationTag[] }\n invited_user_groups: any[]\n invite_connect_key: string\n aforms: AssignForm[]\n spHeadersMenu: string[]\n spSelectTab: string\n notifications: any\n noti_available_events: any\n parent_room_group_id: string\n lp_id: string\n parg: ParentRoomGroup\n\n getGroupTags(): any\n updateLocalRoomsData(rooms: any[], tabName: string)\n getRoom(...args: any): Promise\n getRooms(switchName: string, tabName: string): Promise // {Room[], RoomTab}\n getAvailableSchedule(...args: any)\n setMonthsInfo(data: any)\n setUserInfo(userInfo: RoomMember)\n hasAsTag(): boolean\n setupWebSocket()\n handshakeChannel()\n getMessages(room: Room, page: number)\n updateCurrentInfo(room: Room, astag_id?: string)\n updateMessageRoom()\n resetCurrentInfo()\n setAstag(...args)\n setAppo(appo: Appointment)\n getParentRoom(room: Room): Room\n currentMember(roomId: string): RoomMember\n handleWsEventForMarkAsRead(data: any): void\n handleWsEventForNewMessage(data: any): void\n handleWsEventForCreatedDownloadableFile(data: any): void\n updateFav(room: Room): void\n updateRoomTabs(rooms: Room[]): void\n updateNewMessage(roomMessages: RoomMessage[], message: RoomMessage, parentId: string): void\n handleWsEventForPublishParentRoom(data: any): void\n handleWsEventForUpdateParentRoom(data: any): void\n deleteFromDraftTab(room: Room): void\n deleteFromPublicTab(room: Room): void\n setNewRoom(room: Room)\n fetchRoomTab(uf: string, tabname: string): RoomTab\n // updateOpenRooms(roomId: string): void\n getAllAstags(...args): AvailableScheduleTag[]\n addNewAstag(): AvailableScheduleTag\n selectAstag(astags: AvailableScheduleTag[], selectAstag: AvailableScheduleTag): void\n changeDefaultAstag(astag: AvailableScheduleTag): void\n getAstagDetail(astagId: string): Promise\n canUseOption(optionName: string, setNameIfUnable: boolean): boolean\n getAddressBooks(wantNext: boolean): Promise\n getTemplates(): Promise\n getTitles(): Promise\n getContactListGroups(): Promise\n getUgMembers(): Promise\n getLocations(): any\n getLocationNames(): Promise\n findUserGroupSetting(): any\n startProgress()\n endProgress()\n isProgressing(): boolean\n updateAstagsInfoWithTab(tab: AstagsTab)\n redirectTopIfChukaiFreePlan(...args)\n getAllAssignForms()\n getAformDetail(aformId: string)\n designType(): string\n getNotifications(): Promise\n isChukaiPlan(): boolean\n}\n\n// データストア\nlet _RoomManager: RoomManager = reactive({\n rooms: null, // Rooms\n appointments: [],\n openRooms: [],\n\n /**\n * 以下 Roomの操作に利用します。\n */\n\n currentRoom: null,\n currentAppointment: null,\n currentInstantRoom: null,\n currentMessageRoom: null,\n defaultAstag: null, // デフォルトのastag\n\n astag: null, // この調整ページで利用するastag(astagsの中から取得します)\n chukaiAstag: null, // 仲介会社が不参加時のastag.\n astags: null, // すべてのastagを保持.\n shared_astags: null, // 共有を受けているastagを保持.\n\n /**\n * 以下 Messageの操作に利用します。\n */\n\n wsConnection: null, // WebSockett Connection\n\n memberDicPerRoom: {}, // room_id, member_id をkeyとしたメンバ情報を保持します.\n\n messagesPerRoom: {}, // room_idをkeyとしたルームごとにメッセージを保持します.\n\n currentRoomMessages: [],\n\n cable: null,\n\n /**\n * 以下 Astagの操作に利用します。\n */\n\n /**\n * #/available_scheduleページに遷移してくる際にステータスを記憶させます。\n * 1. チューカイのroom作成時: chukaiCreate => 保存して連携 => 保存後ルーム作成画面またはメッセージ画面に戻る,\n * 2. messagesのヘッダー右上から更新: edit => 調整カレンダーを更新\n */\n currentAstagStatus: \"\",\n\n // カレンダー連携しているか(していない場合、カレンダー連携ボタンを表示)\n didConnectCal: false,\n did_connect_ms_cal: false,\n did_connect_google_cal: false,\n can_use_google_meet: false,\n can_use_teams: false,\n can_use_zoom: false,\n calendar_account_name: null,\n\n // グループ設定\n support_waaq: false,\n plan_option: null,\n contact_list_registration_type: null,\n contact_list_expires_in_days: null,\n\n // ログインしているか.(していない場合、使い方説明付きモーダル表示)\n tutorial_phase: -10,\n confirmed_new_message: false,\n confirmed_connect_cal: false,\n confirmed_quick_vote_tutorial: false,\n\n // ログインする前のユーザー情報の確認で利用します。\n userInfo: null,\n user_setting: null,\n organization: null,\n\n fixed_this_month: null,\n fixed_last_month: null,\n fixed_owner_this_month: null,\n fixed_owner_last_month: null,\n\n // namespace\n namespace: null,\n\n // 企業が設定したロゴURL\n logo_url: null,\n\n /**\n * ルームタブ関係 {active: RoomTab} 最初にDictionaryで作成しておく.\n * all / active / active_in_progress / fixed / closed / unread / favorite\n */\n roomTabs: null,\n\n /**\n * 新規の調整ページが作成された場合、画面の更新をしません。「更新」ボタンが押されたら、public_idベースで一度に取得してきます。\n */\n publishedNewRooms: [],\n\n /**\n * PDMモデルに移行.\n * possibleDates PossibleDateを配列で持ちます,\n * jpFormats 日本語表記の開始~終了時間を記載したものを配列で持ちます,\n * sharedMembers その部屋でシェアしているRoomMemberの情報を配列で持ちます。\n * possibleDatesPerRoom pdm: {possibleDates: PossibleDate[], jpFormats: [], sharedMembers: [RoomMember]}\n */\n pdm: PossibleDatesManager,\n\n refresher: Refresher,\n\n default_location: null,\n\n showPlanOptionModalWithName: null,\n\n email_domains: null,\n user_groups: null, // 同一organizationに紐づくugs\n changeable_user_groups: null, // 切り替え可能なugs\n\n can_use_email_domain: false,\n email_name: null,\n hide_filled_fields: false,\n\n address_book: null,\n userFiles: null,\n loctags: null,\n locationNames: null,\n titles: null,\n templates: null, //テンプレ\n\n sharedLocationsDic: {}, // 共有されているlocationTagsを保持します. {key: astag#sid, value: LocationTag[]}\n\n /**\n * 調整ページ一覧に移動した際に実行したいことを詰め込みます.\n * method:\n * variables: そのメソッドを実行する変数\n */\n nextActionInRoomsDic: null,\n\n /**\n * ownerUGが別の名前で入力する場合に、入力情報をリセットしないよう覚えておく.\n */\n isResetFormForOwnerUg: false,\n\n guestKey: null,\n downloadableFiles: null,\n my_notifications: null,\n\n // 同一UGのもつgroupTags.\n groupTags: null,\n // 自分が設定したタブ.\n tabGroupTags: null,\n progresses: [] as ProgressFinisher[],\n astagsTab: null,\n\n // current_ugを招待しているUGsと招待してもらうためのkeyを保持します.\n invited_user_groups: null,\n invite_connect_key: null,\n\n aforms: null,\n\n // スマホで開いた場合のヘッダーメニュー.\n spHeadersMenu: [],\n spSelectTab: null,\n\n // カスタム通知情報\n notifications: null,\n noti_available_events: null,\n\n parent_room_group_id: null,\n lp_id: null, // l_parent_roomのid\n parg: null,\n\n /**\n * 調整ページを取得します.\n * @param pid [string] ParentRoomIdまたはPublicRoomId\n * @param roomType [string]\n */\n getRoom(pid: string, roomType = `parent_room`, tabName = null, page = null): Promise {\n let endpoint = `rooms`\n let params = {}\n if (roomType == `public_room`) {\n endpoint = `public_rooms`\n params = {\n tab_name: tabName,\n page: page,\n }\n }\n if (this.lp_id) {\n params[`lp_id`] = this.lp_id\n }\n Logger(`rm.${funcName()} pid:${pid}, lp_id:${this.lp_id}`)\n return axios\n .get(`${Util.prefixUrl}/${endpoint}/${pid}`, { params: params })\n .then(res => {\n const roomsData = [res.data.room]\n const _rooms = Room.fetchFromJson(roomsData, this.userInfo.user_id)\n const room = _rooms[0]\n // ローカルデータ this.rooms 等をアップデート\n Logger(`rm.${funcName()} RoomManager#getRoom call Room.mergeRooms`)\n this.rooms = Room.mergeRooms(this.rooms ? [...this.rooms] : [], _rooms)\n this.updateLocalRoomsData(_rooms)\n return room\n })\n .catch(err => {\n Logger(`rm.${funcName()} err: ${Util.output(err)}`)\n NotificationControl.showErrorMessage(err)\n return null\n })\n },\n\n /**\n * 調整ページ一覧を取得します.\n * @param userFilter [string] self / all\n * @param tabName [string]\n * @return Room[],string, string\n */\n getRooms(userFilter: string, tabName: string): Promise {\n Logger(\n `${funcName()} userFilter:${userFilter}, tabName:${tabName}, uf_id:${this.userInfo ? this.userInfo.user_id : null}`\n )\n if (Util.isBlank(this.userInfo)) return Promise.resolve(null)\n /**\n * ルーム一覧のタブ情報をセットします。\n */\n if (!this.roomTabs) this.roomTabs = RoomTab.createAllTabs(this.tabGroupTags)\n\n /**\n * 既に保存しているタブ情報を確認し、ルーム情報を取得してきます。\n */\n let tab: RoomTab = null\n if (!userFilter || !tabName) tab = this.roomTabs[`all`].active_in_progress\n\n // Logger(`RoomManager#getRooms this.roomTabs: ${Util.output(this.roomTabs)}`)\n let params = {}\n if (!tab) {\n tab = this.roomTabs[userFilter][tabName] as RoomTab\n }\n // 次がない場合、取得を中止します。\n if (!tab.has_next) return Promise.resolve(null)\n params = RoomTab.getCurrentTabParams(tab)\n\n let endpoint = `rooms/index`\n if ([`public`, `shared`].includes(tabName)) endpoint = `public_rooms/index`\n if (Util.isPresent(tab.groupTag)) {\n endpoint = `public_rooms/index`\n }\n\n // const paramsSerializer = qs.stringify(params)\n // Change GET to POST v12.2.0-\n // return axios.get(`${Util.prefixUrl}/${endpoint}`, { params: params }).then(res => {\n return axios.post(`${Util.prefixUrl}/${endpoint}`, params).then(res => {\n let uf = res.data.user_filter\n let tabName = res.data.tab_name\n if (uf === undefined && tabName === undefined) {\n Notice.message = `セッションが切れました。ログインし直してください。`\n location.href = `/`\n return\n }\n if (tabName == `group_tag`) {\n tabName = res.data.group_tag_id\n uf = `all`\n }\n tab = this.roomTabs[uf][tabName]\n\n Logger(`rm.${funcName()} RoomManager#getRooms セットするタブ. ${uf} ${tabName}`)\n const newTab = RoomTab.updateCurrentTab(tab, res.data, this.userInfo)\n this.roomTabs[uf][tabName] = newTab\n // Vue.set(this.roomTabs, `[${uf}][${tabname}]`, newTab)\n const rooms = newTab.rooms\n Logger(\n `rm.${funcName()} RoomManager#getRooms タブへのセットが終わりました. ${uf} ${tabName} : has_next: ${\n newTab.has_next\n }, next_page: ${newTab.next_page} ${rooms.length}`\n )\n // this.$set(this, this.roomTabs[userFilter][tabName], newTab)\n if (![`draft`, `public`].includes(tabName)) this.updateLocalRoomsData(rooms, tabName)\n\n return { rooms, tab: newTab }\n })\n },\n\n /**\n * ローカルの調整ページに関するデータを更新します。\n * @param rooms\n */\n updateLocalRoomsData(rooms: Room[], tabName: string = null) {\n Logger(`rm.${funcName()} RoomManager#updateLocalRoomsData`)\n // this.rooms = rooms\n\n const roomKey = roomStorage.fetchSelectedRoomKey()\n Logger(`rm.${funcName()} roomKey: ${roomKey}`)\n\n for (const room of rooms) {\n if (roomKey == room.keyId) {\n this.updateCurrentInfo(room)\n }\n\n this.messagesPerRoom[room.room_id] = null\n\n for (const childroom of room.children) {\n if (roomKey == childroom.keyId) {\n // findCurrentRoom = true\n this.updateCurrentInfo(childroom)\n }\n // 子ルームの未読・既読情報を更新します\n let memberDic = this.memberDicPerRoom[room.room_id]\n this.memberDicPerRoom[childroom.room_id] = memberDic ? memberDic : {}\n // const _mems = RoomMember.fetchFromJson(childroom.members)\n for (const member of childroom.members) {\n this.memberDicPerRoom[childroom.room_id][member.user_id] = member\n }\n this.messagesPerRoom[childroom.room_id] = this.messagesPerRoom[childroom.room_id] || {}\n }\n }\n\n // コピーしないと、同じroomTabの中に、this.roomsが入っていってしまう現象.\n Logger(`rm.${funcName()} RoomManager#updateLocalRoomsData call Room.mergeRooms`)\n this.rooms = Room.mergeRooms(this.rooms ? [...this.rooms] : [], rooms, RoomTab.getSortFuncByTabName(tabName))\n },\n /**\n * 自分のastagを取得してきます。\n */\n getAvailableSchedule(checkAstag = true, parentId?: string): Promise {\n return axios\n .get(`${Util.prefixUrl}/available_schedule_tags`, { params: { parent_room_id: parentId } })\n .then(res => {\n const astagsData = res.data.astags\n\n Logger(`rm.${funcName()} res.data.user_info: ${Util.output(res.data.user_info)}`)\n\n let { astag, chukaiAstag, defaultAstag, astags } = AvailableScheduleTag.setAstags(astagsData)\n this.astag = astag\n this.chukaiAstag = chukaiAstag\n this.defaultAstag = defaultAstag\n this.astags = astags\n\n let org = res.data.organization\n if (Util.isPresent(org)) {\n this.organization = org\n this.email_domains = org.email_domains\n this.user_groups = org.user_groups\n }\n let changeable_user_groups = res.data.changeable_user_groups\n if (changeable_user_groups) {\n this.changeable_user_groups = changeable_user_groups\n }\n\n this.can_use_email_domain = res.data.can_use_email_domain\n this.email_name = res.data.email_name\n Logger(`rm.${funcName()} email_domains: ${Util.output(this.email_domains)}`)\n this.resetCurrentInfo()\n\n if (Util.isPresent(this.astags)) this.selectAstag(this.astags, this.astag)\n\n this.didConnectCal = res.data.did_connect_cal\n this.did_connect_ms_cal = res.data.did_connect_ms_cal\n this.did_connect_google_cal = res.data.did_connect_google_cal\n this.can_use_google_meet = res.data.can_use_google_meet\n this.can_use_teams = res.data.can_use_teams\n this.can_use_zoom = res.data.can_use_zoom\n this.calendar_account_name = res.data.calendar_account_name\n this.tutorial_phase = res.data.tutorial_phase\n this.confirmed_new_message = res.data.confirmed_new_message\n this.confirmed_connect_cal = res.data.confirmed_connect_cal\n this.confirmed_quick_vote_tutorial = res.data.confirmed_quick_vote_tutorial\n this.user_setting = UserSetting.fetchFromJson(res.data.user_setting)\n this.support_waaq = res.data.support_waaq\n this.namespace = res.data.namespace\n this.logo_url = res.data.logo_url\n this.contact_list_registration_type = res.data.contact_list_registration_type\n this.contact_list_expires_in_days = res.data.contact_list_expires_in_days\n if (res.data.default_location) this.default_location = LocationTag.fetchFromJson([res.data.default_location])[0]\n\n const userInfoData = res.data.user_info\n this.plan_option = res.data.plan_option as PlanOption\n const uf = RoomMember.fetchFromJson([userInfoData])[0]\n Logger(`rm.${funcName()} user info : ${Util.output(userInfoData)}, tutorial_phase: ${this.tutorial_phase}`)\n this.setUserInfo(uf)\n\n this.setMonthsInfo(res.data)\n this.my_notifications = res.data.my_notifications\n\n this.tabGroupTags = res.data.tab_group_tags || []\n\n this.astagsTab = AstagsTab.createNew(astags, [], res.data.astags_tab_info)\n\n /**\n * ルーム一覧のタブ情報をセットします。\n */\n if (!this.roomTabs) this.roomTabs = RoomTab.createAllTabs()\n\n if (Const.chukaiFreePlan(this)) {\n this.invite_connect_key = res.data.invite_connect_key\n let invitedUgs = res.data.invited_user_groups\n if (invitedUgs && invitedUgs.length > 0) {\n // 招待されているUGがある場合\n this.invited_user_groups = invitedUgs\n } else {\n // 招待されていない場合\n router.push(`/not_invited`)\n return\n }\n }\n\n return this.defaultAstag\n })\n .catch(err => {\n Logger(`rm.${funcName()} err: ${err.message} ${Util.output(err.response)}`)\n NotificationControl.showErrorMessage(err)\n const res = err.response ? err.response : null\n if (res) {\n if (res.status == 400) {\n Notice.message = `セッションが切れました。ログインし直してください。`\n location.href = `/`\n }\n }\n return null\n })\n },\n /**\n * ルーム一覧に設置する件数を保存します。\n * @param data\n */\n setMonthsInfo(data: any) {\n this.fixed_this_month = data.fixed_this_month || []\n this.fixed_last_month = data.fixed_last_month || []\n this.fixed_owner_this_month = data.fixed_owner_this_month\n this.fixed_owner_last_month = data.fixed_owner_last_month\n // Logger(`other DATA: ${data.fixed_owner_this_month} ${data.fixed_owner_last_month}`)\n },\n /**\n * オーナーやUserInfoを特定できるAstag取得時か、\n * ゲストでユーザー情報を取得してきた場合にはめて、チャットを取得できるようにします。\n * @param userInfo\n */\n setUserInfo(userInfo: RoomMember) {\n this.userInfo = userInfo\n this.pdm.setUserInfo(this.userInfo)\n if (!this.wsConnection) this.setupWebSocket()\n },\n /**\n * Astagが作成しているかを確認します。\n */\n hasAsTag(): boolean {\n return this.astag\n },\n /**\n * サーバー側とWebSocketコネクションを確立します。\n */\n setupWebSocket() {\n if (Util.isEmbeds()) {\n this.cable = {}\n this.wsConnection = {}\n return\n }\n if (!this.cable) {\n this.cable = ActionCable.createConsumer(\"/api/ws/cable\")\n this.wsConnection = this.handshakeChannel()\n Logger(`チャネル登録が完了しました`)\n } else {\n Logger(`setupWebSocket called already setup`)\n }\n },\n\n /**\n * 持っているルームをサーバー側にルームをサブスクライブします。\n */\n handshakeChannel() {\n const channel = \"RoomChannel\"\n let connection = this.cable.subscriptions.create(\n { channel: channel, user_id: this.userInfo.user_id },\n {\n connected: data => {\n Logger(`connected: ${Util.output(data)}`)\n },\n disconnected: data => {\n Logger(`disconnected: ${Util.output(data)}`)\n },\n rejected: data => {\n Logger(`rejected: ${Util.output(data)}`)\n },\n received: data => {\n Logger(`Eventを受信しました: ${Util.output(data)}`)\n if (data.publish_parent_room) {\n this.handleWsEventForPublishParentRoom(data.publish_parent_room)\n }\n if (data.update_parent_room) {\n this.handleWsEventForUpdateParentRoom(data.update_parent_room)\n }\n if (data.mark_as_read) {\n this.handleWsEventForMarkAsRead(data.mark_as_read)\n }\n if (data.new_message) {\n this.handleWsEventForNewMessage(data.new_message)\n }\n if (data.created_downloadable_file) {\n this.handleWsEventForCreatedDownloadableFile(data.created_downloadable_file)\n }\n },\n }\n )\n return connection\n },\n /**\n * メッセージを取得してきます。\n * @param room [Room]\n */\n getMessages(room: Room, page: number = 1): Promise {\n if (!room) return Promise.resolve(null)\n if (room.room_type == `public_room`) return Promise.resolve(null)\n Logger(`rm.${funcName()} roomId:${room.id}, page:${page}`)\n let parentId = room.isParent ? room.id : room.parentRoomId\n if (!parentId) {\n // parentIdがないため、いったん返却します。\n return Promise.resolve(null)\n }\n\n return axios\n .get(`${Util.prefixUrl}/room_messages`, {\n params: {\n page: page,\n room_id: room.room_id,\n parent_id: parentId,\n },\n })\n .then(res => {\n const messagesData = res.data.messages_dic\n if (messagesData) {\n let dic = {}\n Object.entries(messagesData).forEach(([room_id, messagesDic]) => {\n const _messagesDic: any = messagesDic\n Logger(`rm.${funcName()} 取得してきた_messagesDic: ${Util.output(_messagesDic)}`)\n\n /**\n * 挿入します。\n */\n dic[room_id] = RoomMessage.insertMessagesPerRoom(this.messagesPerRoom, room_id, _messagesDic)\n\n if (this.currentRoom && this.currentRoom.room_id === room_id) {\n this.currentRoomMessages = dic[room_id].messages\n }\n })\n this.messagesPerRoom = dic\n }\n return this.currentRoomMessages\n })\n .catch(err => {\n // Logger(`err: ${err.message} ${Util.output(err.response)}`)\n // NotificationControl.showErrorMessage(err)\n return null\n })\n },\n\n /**\n * 現在クリックしている調整ページ情報にすべてをアップデートします。\n * @param room [Room] 更新する調整ページ\n * @param astag_id [string] 指定がある場合はそのastagをセット.\n */\n updateCurrentInfo(room: Room, astag_id: string = null) {\n if (!room) return\n\n Logger(`rm.${funcName()} RoomManager#updateCurrentInfo room:${room?.id}`)\n this.currentRoom = room\n this.updateMessageRoom()\n if (Util.isPresent(this.rooms)) {\n let _room = this.rooms.find(r => r.id == room.id)\n if (_room) _room.progress_status = room.progress_status\n }\n\n this.currentAppointment = room.current_appointment\n if (Util.isPublic()) return\n if (Util.isPreview()) {\n // プレビュー\n this.astag = (this.astags || []).find(ast => ast.id == room.owner_avaialble_schedule_tag_id)\n\n Logger(`rm.${funcName()} preview用 this.defaultAstag: ${this.defaultAstag?.id}:${this.defaultAstag?.name}`)\n } else {\n Logger(`rm.${funcName()} astags:${Util.output(this.astags)}`)\n this.astag ||= (this.astags || []).find(ast => ast.rooms && ast.rooms.includes(room.id))\n\n if (astag_id) {\n this.astag ||= (this.astags || []).find(a => a.id == astag_id)\n }\n }\n\n roomStorage.saveSelectedParentRoomId(room.id)\n\n if (Util.isBlank(this.astag)) this.setAstag()\n // roomStorage.save(room)\n // roomStorage.saveAppointment(room.current_appointment)\n\n Logger(`rm.${funcName()} astagにセット astag:${this.astag?.id}:${this.astag?.name}`)\n\n // currentRoomMessagesはRoomMessagesに移譲.\n // this.currentRoomMessages = this.messagesPerRoom[room.room_id]\n },\n updateMessageRoom() {\n Logger(`rm.${funcName()} ${this.currentRoom?.id}`)\n if (!this.currentRoom) return\n\n // if (this.room.room_type == `public_room` && this.rm.currentRoom.room_type == `parent_room`) {\n if (this.currentRoom.room_type == `parent_room`) {\n // ParentRoomに更新します。\n Logger(\n `rm.${funcName()} parentRoomに更新がありました: currentRoom(${this.currentRoom?.id}) room_type:${\n this.currentRoom?.room_type\n }, currentMessageRoom(${this.currentMessageRoom?.id}) room_type:${this.currentMessageRoom?.room_type}`\n )\n if (Util.isBlank(this.currentMessageRoom) || this.currentMessageRoom.room_type == `public_room`) {\n this.currentMessageRoom = this.currentRoom\n } else if (this.currentMessageRoom.room_id == this.currentRoom.room_id) {\n this.currentMessageRoom = this.currentRoom\n } else {\n Logger(`rm.${funcName()} NotFound`)\n for (let _croom of this.currentRoom.children) {\n if (this.currentMessageRoom.room_id == _croom.room_id) {\n Logger(`rm.${funcName()} _croom.room_type:${_croom.room_type}`)\n this.currentMessageRoom = _croom\n }\n }\n\n if (Util.isBlank(this.currentMessageRoom)) {\n Logger(`rm.${funcName()} Blank currentMessageRoom`)\n this.currentMessageRoom = this.currentRoom\n }\n }\n Logger(`rm.${funcName()} this.currentMessageRoom:${this.currentMessageRoom?.id}`)\n }\n },\n resetCurrentInfo() {\n this.currentRoom = null\n this.currentAppointment = null\n Logger(`rm.${funcName()} astags.length:${this.astags?.length}`)\n if (Util.isBlank(this.astags)) return\n this.setAstag()\n Logger(`rm.${funcName()} resetCurrentInfo: astagをセットしました: ${this.astag?.name}`)\n },\n setAstag(defaultType = 1) {\n this.astag = Util.isPresent(this.defaultAstag) ? this.defaultAstag : this.astag\n Logger(\n `rm.${funcName()} 最初1 defaultType:${defaultType} astag:${this.astag?.id}:${this.astag?.name}, astags[${\n this.astags?.length\n }]:${Util.output(this.astags)}`\n )\n if (Util.isBlank(this.astag)) {\n let _astag = (this.astags || []).find(a => a.type == defaultType)\n Logger(`rm.${funcName()} 最初2 astag:${_astag?.id}:${_astag?.name}`)\n if (_astag) {\n this.astag = _astag\n Logger(`rm.${funcName()} SET find MY astag:${this.astag?.id}:${this.astag?.name}`)\n } else {\n this.astag = AvailableScheduleTag.createDefaultAstag()\n Logger(`rm.${funcName()} SET create default astag:${this.astag?.id}:${this.astag?.name}`)\n }\n }\n },\n setAppo(appo: Appointment) {\n Logger(`rm.${funcName()} ${Util.output(appo)}`)\n this.currentAppointment = appo\n this.currentRoom.current_appointment = appo\n roomStorage.save(this.currentRoom)\n roomStorage.saveAppointment(appo)\n },\n /**\n * 子ルームから親ルームを取得します。\n * @param room\n */\n getParentRoom(room: Room): Room {\n let _room = Room.find(this.rooms, \"#\", room.room_id)\n if (_room) return _room\n return null\n },\n /**\n * 現在アクセス者の指定ルームにおけるRoomMemberオブジェクトを返却します。\n * @param roomId\n */\n currentMember(roomId: string): RoomMember {\n // const memberDic = this.memberDicPerRoom[roomId]\n let _room = Room.find(this.rooms, \"#\", roomId)\n if (!_room) return null\n // if (!memberDic) return null\n // const currentUserId = this.userInfo.user_id\n // const members: RoomMember[] = Object.values(memberDic)\n // return members.find(mem => mem.user_id === currentUserId)\n // return memberDic[this.userInfo.user_id]\n return _room.members.find(m => m.user_id == this.userInfo.user_id)\n },\n\n /**\n * 誰かが既読にした WSイベント を処理します。\n * @param data\n */\n handleWsEventForMarkAsRead(data: any): void {\n Logger(`handleWsEventForMarkAsRead: ${Util.output(data)}`)\n // Logger(`memberDicPerRoom 1: ${Util.output(this.memberDicPerRoom)}`)\n // const memberDic = this.memberDicPerRoom[data.room_id] || {}\n let _room = Room.find(this.rooms, `#`, data.room_id)\n if (!_room) return\n let _member = _room.members.find(m => m.user_id == data.user_id)\n // let member: RoomMember = memberDic[data.user_id] ? { ...memberDic[data.user_id] } : {}\n\n //{\"room_id\":\"5e0411702643ec24ed37d1c0\",\"member_id\":\"5e0411702643ec24ed37d1c2\",\"user_id\":\"5d8a9e552643ec0a92281560\",\"last_read_message_id\":\"5eb1243964516c1aa93b34ee\",\"last_read_message_created_at\":1588667449,\"last_read_at\":1588668553}\n // const updatedMember: RoomMember = Object.assign(member, data)\n if (!_member) return\n // let member = { ..._member } as RoomMember\n // Object.assign(member, data)\n // _member = member\n\n _member.last_read_message_id = data.last_read_message_id\n _member.last_read_message_created_at = data.last_read_message_created_at\n _member.last_read_at = data.last_read_at\n\n Logger(`rm.${funcName()} memberの既読時間を更新します。 :${Util.output(_member)}`)\n\n // memberDic[data.user_id] = member\n // this.memberDicPerRoom[data.room_id][data.user_id] = member\n // Logger(`memberDicPerRoom 2: ${Util.output(this.memberDicPerRoom)}`)\n // this.updateOpenRooms(data.room_id)\n },\n\n /**\n * 新着メッセージ WSイベント を処理します。\n * @param data\n */\n handleWsEventForNewMessage(data: any): void {\n Logger(`handleWsEventForNewMessage: ${Util.output(data)}`)\n const mess = RoomMessage.fetchFromJson([data.message])\n let message: RoomMessage = mess ? mess[0] : null\n const parentId = message.parent_id\n let dic = this.messagesPerRoom[message.room_id]\n if (!dic) {\n // ルームが存在していないので、ルーム情報を取得した上で入れ込みます。\n Logger(`rm.${funcName()} ルームが存在していないので、ルーム情報を取得した上で入れ込みます。`)\n let _room = Room.find(this.rooms, \"#\", message.room_id)\n this.getMessages(_room).then(currentRoomMessages => {\n Logger(`rm.${funcName()} 最新のメッセージを再取得しましたのでご安心ください。 ${currentRoomMessages}`)\n dic = this.messagesPerRoom[message.room_id]\n let roomMessages = Util.isPresent(dic) ? dic.messages || [] : []\n if (data.message.system_type == 60) {\n let fileId = data.message.deleted_file.file_id\n RoomMessage.deleteFileInMessages(roomMessages, fileId)\n }\n this.updateNewMessage(roomMessages, message, parentId)\n })\n } else {\n let roomMessages = dic ? dic.messages || [] : []\n if (data.message.system_type == 60) {\n let fileId = data.message.deleted_file.file_id\n RoomMessage.deleteFileInMessages(roomMessages, fileId)\n }\n\n this.updateNewMessage(roomMessages, message, parentId)\n }\n },\n /**\n * ダウンロードファイルが作成された時点で取得します.\n * @param data\n */\n handleWsEventForCreatedDownloadableFile(data: any) {\n Logger(`handleWsEventForCreatedDownloadableFile data:${Util.output(data)}`)\n let files = this.downloadableFiles || []\n let createdFile: UserFile = data.user_file\n\n let file = files.find(f => f.file_id == createdFile.file_id)\n if (file) {\n files = files.filter(f => f.file_id != createdFile.file_id)\n files.unshift(createdFile)\n } else {\n files.unshift(createdFile)\n }\n this.downloadableFiles = files\n },\n updateFav(room: Room) {\n let _room = Room.find(this.rooms, room.id, \"#\")\n if (_room) {\n _room.starred = room.starred\n this.updateRoomTabs(null)\n } else {\n // pub_roomのスター.\n let roomTab = this.roomTabs[`all`][`public`]\n\n _room = (roomTab.rooms || []).filter(r => r.id == room.id)\n if (_room) {\n _room.starred = room.starred\n }\n }\n },\n updateRoomTabs(rooms: Room[]): void {\n Logger(`rm.${funcName()} updateRoomTabs called.`)\n this.roomTabs = RoomTab.sortAutomatically(this.roomTabs, rooms || this.rooms, this.userInfo)\n },\n /**\n * 送信中のメッセージ情報を削除し、取得してきたメッセージ情報を入れます。\n * @param roomMessages 既に取得済みのメッセージ\n * @param message 今回受信した新しいメッセージ\n * @param parentId 取得してきたメッセージのparent_id\n */\n updateNewMessage(roomMessages: RoomMessage[], message: RoomMessage, parentId: string) {\n const roomMessagesIds = roomMessages.map(m => m.id) || []\n // 未送信のメッセージを削除します。\n roomMessages.forEach((el, index) => {\n if ((el.id == \"sending\" || el.id == \"unsent\") && el.message == message.message) {\n roomMessages.splice(index, 1)\n }\n })\n if (!roomMessagesIds.includes(message.id)) {\n const lastMessage: RoomMessage = roomMessages[roomMessages.length - 1]\n // const lastMessage: RoomMessage = RoomMessage.fetchFromJson([roomMessages[roomMessages.length - 1]])[0]\n /**\n * この前に取得していた最後のメッセージと同じ日付だったら、start_of_the_dayをfalseにして日付を表示させない.\n */\n if (lastMessage && DateTime.fromSeconds(lastMessage.created_at).day == DateTime.fromSeconds(message.created_at).day) {\n message.start_of_the_day = false\n }\n roomMessages.push(message)\n\n // 自分ではない場合にバッジを更新します。\n // TODO: user_id undefinedになることがある.\n if (message.is_system || message.owner.user_id != this.userInfo.user_id) {\n //\n // バッジの更新\n //\n let room = Room.find(this.rooms, \"#\", message.room_id)\n if (room) {\n // オーナーでなく、かつ全体権限をもらっていない場合は、更新しません.\n if (!room.is_owner && !UserPermissionsOption.permitDisplay(this.userInfo, `rooms`, `rooms_all_tab`)) {\n return\n }\n room.unread_num++\n Logger(`rm.${funcName()} メッセージのバッジをカウントアップしました Parent。 ${room.unread_num} + 1`)\n // let roomTab: RoomTab = this.roomTabs[`all`][`unread`]\n // Room.mergeRooms(roomTab.rooms, [room])\n this.updateRoomTabs()\n }\n\n NotificationControl.createAndPushMessage(message)\n }\n }\n\n // 投稿者自身がメンバならLocalの読み込み時刻を更新します\n // if (message.member_id && message.member_id === message.owner.user_id) {\n // this.memberDicPerRoom[message.room_id][message.owner.user_id] = message.owner\n // }\n let _room = Room.find(this.rooms, \"#\", message.room_id)\n if (_room) {\n Logger(`rm.${funcName()} newMessageからroomにあるmemberのread_atを更新します。`)\n let mem = _room.members.find(m => m.user_id == message.owner.user_id)\n if (mem) {\n mem.last_read_at = message.owner.last_read_at\n mem.last_read_message_created_at = message.owner.last_read_message_created_at\n // mem = message.owner\n // Object.assign(mem, message.owner)\n }\n }\n },\n\n /**\n * ParentRoom 更新イベント を処理します。\n * ex. {\"id\":\"5e87600a2643ec23b5314f83\",\"status\":102,\"status_name\":\"確定済\",\"updated_at\":1586668781,\"expired_at\":1587891600}\n * @param data\n */\n handleWsEventForUpdateParentRoom(data: any): void {\n Logger(`WsEventForUpdateParentRoom: ${Util.output(data)}`)\n const parentId = data.id\n let room = Room.find(this.rooms, parentId, \"#\")\n Logger(`WsEventForUpdateParentRoom: findRoom?:${Util.isPresent(room)}`)\n\n if (room) {\n room.status = data.status\n room.status_name = data.status_name\n room.updated_at = data.updated_at\n room.expired_at = data.expired_at\n\n if (data.current_appointment) {\n // 確定した場合、appo情報が入っているので、はめます。\n room.current_appointment = Appointment.fetchFromJson([data.current_appointment])[0]\n }\n\n let rooms = Room.mergeRooms(this.rooms ? [...this.rooms] : [], [room])\n // 関係のあるタブにもアップデート処理を入れます。\n this.updateRoomTabs(rooms)\n if (this.currentRoom && this.currentRoom.id == room.id) {\n this.updateCurrentInfo(room)\n }\n this.refresher.needRefresh.push(`room`)\n } else {\n let is_owner_group = data.is_owner_group\n let ownerUgId = data.owner_user_group_id\n if (is_owner_group && ownerUgId != this.userInfo.user_group_id) {\n Logger(\n `rm.${funcName()} オーナーUGだけど、現在のログインしているUGと異なる場合、権限がありませんと表示されるため取得しません。`\n )\n return\n }\n\n this.getRoom(parentId).then(newRoom => {\n // this.roomTabs[this.switchName][this.tabName] = newTab\n // let tab: RoomTab = this.roomTabs[`all`][`unread`]\n let rooms = Room.mergeRooms(this.rooms ? [...this.rooms] : [], [newRoom])\n let room = Room.find(this.rooms, parentId, \"#\")\n if (room) {\n room.status = data.status\n room.status_name = data.status_name\n room.updated_at = data.updated_at\n room.expired_at = data.expired_at\n }\n\n // 関係のあるタブにもアップデート処理を入れます。\n this.updateRoomTabs(rooms)\n if (this.currentRoom && this.currentRoom.id == newRoom.id) {\n this.updateCurrentInfo(newRoom)\n }\n this.refresher.needRefresh.push(`room`)\n })\n }\n },\n\n /**\n * ParentRoom 公開イベント を処理します。\n * ex. {\"id\":\"5e87600a2643ec23b5314f83\",\"status\":102,\"status_name\":\"確定済\",\"updated_at\":1586668781,\"expired_at\":1587891600}\n * @param data\n */\n handleWsEventForPublishParentRoom(data: any): void {\n Logger(`WsEventForPublishParentRoom: ${Util.output(data)}`)\n const parentId = data.id\n\n Logger(`rm.${funcName()} pub_id: ${data.public_room_id}, ${data.status}`)\n if (data.public_room_id && data.status == 101) {\n let pubId = data.public_room_id\n Logger(`rm.${funcName()} pubId: ${pubId}`)\n let alltab: RoomTab = this.roomTabs[`all`][`public`]\n let selftab: RoomTab = this.roomTabs[`self`][`public`]\n let updatedRoomIds = []\n for (let tab of [alltab, selftab]) {\n if (tab && Util.isPresent(tab.rooms)) {\n let _rooms = [...(tab.rooms || [])]\n let _room = _rooms.find(r => r.id == pubId)\n if (_room && !updatedRoomIds.includes(_room.id)) {\n _room.rooms_voted_num += 1\n Logger(`rm.${funcName()} 提案数をカウントアップします: ${_room.public_id}`)\n updatedRoomIds.push(_room.id)\n }\n tab.rooms = _rooms\n }\n }\n\n if (this.currentRoom && this.currentRoom.room_type == `public_room` && this.currentRoom.id == pubId) {\n this.currentRoom.rooms_voted_num += 1\n }\n }\n\n let room = (this.rooms || []).find(r => r.id == parentId)\n if (room) return\n\n let is_owner_group = data.is_owner_group\n let ownerUgId = data.owner_user_group_id\n if (is_owner_group && ownerUgId != this.userInfo.user_group_id) {\n Logger(\n `rm.${funcName()} オーナーUGだけど、現在のログインしているUGと異なる場合、権限がありませんと表示されるため取得しません。`\n )\n return\n }\n\n this.getRoom(parentId).then(_room => {})\n // if (this.publishedNewRooms && this.publishedNewRooms.length > 0) {\n // this.publishedNewRooms.push(data.public_id)\n // } else {\n // this.publishedNewRooms = [data.public_id]\n // }\n },\n\n /**\n * 下書きは別管理のため、削除します。\n * @param room [Room] 削除するルーム.\n */\n deleteFromDraftTab(room: Room): void {\n let draftTab: RoomTab = this.roomTabs[`all`][`draft`]\n let selfDraftTab: RoomTab = this.roomTabs[`self`][`draft`]\n for (let _tab of [draftTab, selfDraftTab]) {\n if (_tab && Util.isPresent(_tab.rooms)) {\n if (room.status == Room.STATUS_DRAFT) {\n // 送られてきたroomのステータスが下書きだったら下書き内容をアップデート\n let _room = Room.find(_tab.rooms, room.id, \"#\")\n if (_room) {\n _room = Object.assign(_room, room)\n } else {\n _tab.rooms.unshift(room)\n }\n } else {\n _tab.rooms = _tab.rooms.filter(r => r.id != room.id)\n }\n }\n }\n },\n\n deleteFromPublicTab(room: Room): void {\n let alltab = this.roomTabs[`all`][`public`]\n let selftab = this.roomTabs[`self`][`public`]\n for (let tab of [alltab, selftab]) {\n if (tab && Util.isPresent(tab.rooms)) {\n tab.rooms = tab.rooms.filter(r => r.id != room.id)\n }\n }\n },\n\n setNewRoom(room: Room) {\n // ローカルデータ this.rooms 等をアップデート\n if (room.room_type == `public_room`) {\n this.deleteFromDraftTab(room)\n let _rooms = this.roomTabs[`all`][`public`].rooms\n this.roomTabs[`all`][`public`][`rooms`] = Room.mergeRooms(_rooms, [room])\n if (room.owner.user_id == this.userInfo.user_id) {\n let _selfrooms = this.roomTabs[`self`][`public`].rooms\n this.roomTabs[`self`][`public`][`rooms`] = Room.mergeRooms(_selfrooms, [room])\n }\n if (room.is_shared) {\n let _selfrooms = this.roomTabs[`self`][`shared`].rooms\n this.roomTabs[`self`][`shared`][`rooms`] = Room.mergeRooms(_selfrooms, [room])\n }\n return\n }\n this.rooms = Room.mergeRooms(this.rooms ? [...this.rooms] : [], [room])\n\n // 下書きから削除\n this.deleteFromDraftTab(room)\n\n this.updateLocalRoomsData(this.rooms)\n\n // すべて・調整中タブのルーム情報に追加\n const tabNameGroups = [\n [`all`, `all`],\n [`all`, `active_in_progress`],\n ]\n if (room.is_owner) {\n Array.prototype.push.apply(tabNameGroups, [\n [`self`, `all`],\n [`self`, `active_in_progress`],\n ])\n }\n tabNameGroups.forEach(a => {\n const filterName = a[0]\n const tabName = a[1]\n if (!this.roomTabs[filterName][tabName]) {\n this.roomTabs[filterName][tabName] = RoomTab.createDefault(filterName, tabName)\n }\n const tab = this.roomTabs[filterName][tabName]\n const _tab_rooms = tab.rooms ? [...tab.rooms] : []\n tab.rooms = Room.mergeRooms(_tab_rooms, [room], RoomTab.getSortFuncByTabName(tabName))\n })\n },\n\n fetchRoomTab(uf: string, tabname: string): RoomTab {\n let tab = this.roomTabs[uf][tabname] as RoomTab\n return tab\n },\n\n /**\n * 不参加カレンダーを除く全てのカレンダーを取得してきます。\n * オフした後に、astagがある場合はそれを選択した状態にします。\n */\n getAllAstags(selectedAstag: AvailableScheduleTag = null): AvailableScheduleTag[] {\n if (!this.astags) return []\n let astags = this.astags.filter(a => [1, 2, 50].includes(a.type)) || []\n astags.forEach(a => (a.selected = false))\n if (selectedAstag) {\n this.selectAstag(astags, selectedAstag)\n }\n return astags\n },\n addNewAstag(): AvailableScheduleTag {\n let astag = AvailableScheduleTag.createDefaultAstag()\n this.astags.unshift(astag)\n return astag\n },\n /**\n * 選択するastagにフラグを立てます。\n * @param astags すべてのastag この中から、astag(ない場合はastag)に選択しているフラグを立てます。\n */\n selectAstag(astags: AvailableScheduleTag[], selectedAstag: AvailableScheduleTag = null): void {\n astags.forEach(a => (a.selected = false))\n if (selectedAstag) {\n let _ast = astags.find(a => a.id == selectedAstag.id)\n if (_ast) _ast.selected = true\n }\n // if (astags.length == 0) {\n // // 0の場合はなにもせず\n // } else if (astags.length == 1) {\n // astags[0].selected = true\n // } else {\n // // 複数ある場合、\n // let _ast: AvailableScheduleTag = null\n // if (this.astag) {\n // _ast = astags.find(a => a.id == this.astag.id)\n // } else if (this.defaultaAstag) {\n // // this.astagはデフォルト設定のものが入っている\n // _ast = astags.find(a => a.id == this.astag.id)\n // }\n // if (_ast) _ast.selected = true\n // }\n },\n changeDefaultAstag(astag: AvailableScheduleTag): void {\n let astags = this.getAllAstags()\n for (let _ast of astags) {\n if (_ast.type == 10) continue\n if (_ast.type == 50) continue\n\n if (_ast.id == astag.id) {\n this.defaultAstag = astag\n _ast.type = 2\n } else {\n _ast.type = 1\n }\n }\n },\n getAstagDetail(astagId): Promise {\n Logger(`rm.getAstagDetail astagId:${astagId}`)\n let astag\n if (astagId) {\n if (astagId == `not_attend`) {\n astag = this.chukaiAstag\n astag ||= this.astags.find(a => a.type == 10)\n } else if (astagId == `newId`) {\n // 複製した場合、すでに詳細取得後がrm.astagに入っているためそのまま返します.\n return Promise.resolve(this.astag)\n } else {\n astag = this.astags.find(a => a.id == astagId)\n if (!astag) {\n // 仲介から取得します.\n astag = (this.astagsTab?.shared_chukai_astags || []).find(a => a.id == astagId)\n Logger(`rm.getAstagDetail 仲介から取得します. astag:${astag?.id}`)\n }\n }\n }\n\n if (astag?.has_detail) return Promise.resolve(astag)\n\n Logger(`rm.getAstagDetail 詳細情報をキャッシュしていないので取得してきます. astag:${astag?.id}, astagId:${astagId}`)\n let _astagId = astagId || astag?.id || `default`\n\n return AvailableScheduleTag.getAstagDetail(_astagId).then(_astag_dic => {\n let _astag = _astag_dic.astag\n if (_astag) {\n let _ast = (this.astags || []).find(a => a.id == _astag.id)\n if (_ast) {\n // _ast = Object.assign(_ast, _astag)\n _ast.has_detail = true\n _ast.meeting_attendees_groups = _astag.meeting_attendees_groups\n } else {\n if (_astag.owner.user_group_id == this.userInfo.user_group_id) {\n // 外部から共有している調整カレンダーの場合はastagsに入れません.\n this.astags.push(_astag)\n if (_astag.type == 2) {\n this.defaultAstag = _astag\n }\n if (_astag.type == 10) {\n this.chukaiAstag = _astag\n }\n } else {\n this.astagsTab?.shared_chukai_astags?.push(_astag)\n }\n }\n\n if (_astag?.is_shared) {\n // 共有を受けているカレンダーのオーナーのloctagsを保持します.\n this.sharedLocationsDic[_astag.id] = _astag_dic.shared_loctags || []\n }\n\n return _astag\n }\n\n return null\n })\n },\n canUseOption(optionName: StringUnitLength, setNameIfUnable: boolean = false): boolean {\n let available = false\n if (!this.plan_option) {\n Logger(`rm.${funcName()} plan_optionを取得し直します.`)\n this.getAvailableSchedule().then(data => {\n available = PlanOption.canUseOption(this.plan_option, optionName)\n if (setNameIfUnable) {\n if (available) {\n this.showPlanOptionModalWithName = null\n } else {\n this.showPlanOptionModalWithName = optionName\n }\n }\n return available\n })\n } else {\n available = PlanOption.canUseOption(this.plan_option, optionName)\n Logger(`rm.canUseOption setNameIfUnable:${setNameIfUnable} optionName:${optionName} available:${available}`)\n if (setNameIfUnable) {\n if (available) {\n this.showPlanOptionModalWithName = null\n } else {\n this.showPlanOptionModalWithName = optionName\n }\n }\n return available\n }\n },\n /**\n * アドレス帳を取得してきます。\n */\n getAddressBooks(wantNext: boolean): Promise {\n if (this.address_book && this.address_book.contact_lists && !wantNext)\n return Promise.resolve(this.address_book.contact_lists)\n\n if (!this.address_book) {\n this.address_book = AddressBook.createDefault()\n }\n\n return AddressBook.getContactList(this.address_book).then(data => {\n if (data) {\n this.address_book = data\n // this.address_book.contact_lists = data.contact_lists\n // this.address_book.contact_list_groups = data.contact_list_groups\n // this.address_book.ug_members = data.ug_members\n } else {\n this.address_book.contact_lists = []\n this.address_book.contact_list_groups = []\n this.address_book.ug_members = []\n }\n return this.address_book.contact_lists\n })\n },\n getContactListGroups(): Promise {\n if (this.address_book && this.address_book.contact_list_groups)\n return Promise.resolve(this.address_book.contact_list_groups)\n\n return this.getAddressBooks(true).then(_ => {\n return this.address_book.contact_list_groups\n })\n },\n getTemplates(): Promise {\n Logger(`rm.getTemplates isGuest:${Util.isGuest()}`)\n if (Util.isGuest()) return Promise.resolve([])\n if (this.templates) return Promise.resolve(this.templates)\n\n return MessageTemplate.getTemplates().then(tmps => {\n if (tmps) {\n this.templates = tmps\n }\n return tmps\n })\n },\n getTitles(): Promise {\n if (this.titles) return Promise.resolve(this.titles)\n\n return Appointment.getTitles().then(titles => {\n this.titles = titles\n return titles\n })\n },\n getUgMembers(): Promise {\n if (this.address_book && this.address_book.ug_members) return Promise.resolve(this.address_book.ug_members)\n\n return this.getAddressBooks(true).then(_ => {\n return this.address_book.ug_members\n })\n },\n getLocations(): any {\n if (this.loctags) return Promise.resolve(this.loctags)\n\n return LocationTag.getLocations().then(e => {\n Logger(`rm.${funcName()} 登録済みのロケーション情報を取得してきました: ${Util.output(e)} `)\n this.loctags = e || []\n return this.loctags\n })\n },\n getLocationNames(): Promise {\n if (this.locationNames) return Promise.resolve(this.locationNames)\n\n return Appointment.getLocationNames().then(e => {\n Logger(`rm.${funcName()} 登録済みのロケーション情報(Names)を取得してきました: ${Util.output(e)} `)\n this.locationNames = e || []\n return this.locationNames\n })\n },\n getGroupTags(): Promise {\n if (this.groupTags) return Promise.resolve(this.groupTags)\n\n return GroupTag.getGroupTags().then(e => {\n Logger(`rm.${funcName()} 登録済みのグループタグを取得してきました: ${Util.output(e)} `)\n this.groupTags = e || []\n return this.groupTags\n })\n },\n findUserGroupSetting() {\n let org = this.organization\n if (!this.org) return null\n let ugs = org.user_groups\n if (Util.isPresent(ugs)) {\n let ug = ugs[0]\n if (Util.isPresent(ug)) {\n return ug.user_group_setting\n }\n }\n return null\n },\n startProgress() {\n let prog = useProgress().start()\n this.progresses.push(prog)\n },\n endProgress() {\n this.progresses.pop()?.finish()\n },\n isProgressing() {\n return this.progresses.length > 0\n },\n updateAstagsInfoWithTab(tab: AstagsTab) {\n this.astags = tab.astags\n this.shared_astags = tab.shared_astags\n this.astagsTab = tab\n },\n /**\n * 仲介招待UG(ug.status==2000)の場合、リダイレクト制御を行います.\n */\n redirectTopIfChukaiFreePlan(redirectName: string = null) {\n if (Const.chukaiFreePlan(this)) {\n Logger(`rm.redirectTopIfChukaiFreePlan ChukaiFreePlanのため、トップにリダイレクトします。`)\n if (redirectName) {\n router.push({ name: redirectName })\n } else {\n router.push({ name: \"root\" })\n }\n }\n },\n\n getAllAssignForms() {\n if (this.aforms) return Promise.resolve(this.aforms)\n\n return AssignForm.getAllAssignForms().then(forms => {\n this.aforms = forms\n return forms\n })\n },\n getAformDetail(aformId: string): Promise {\n if (!aformId) return Promise.resolve(null)\n if (this.aform && this.aform.id == aformId) return Promise.resolve(this.aform)\n\n return AssignForm.getAformDetail(aformId).then(aform => {\n if (aform) {\n let _fm = (this.aforms || []).find(a => a.id == aform.id)\n if (_fm) {\n _fm.has_detail = true\n _fm.assign_conditions = aform.assign_conditions\n } else {\n if (aform.owner.user_group_id == this.userInfo.user_group_id) {\n // 外部から共有している調整カレンダーの場合はastagsに入れません.\n this.aforms ||= []\n this.aforms.push(aform)\n }\n }\n this.aform = aform\n }\n return aform\n })\n },\n designType() {\n Logger(`rm.designType design_type:${this.currentRoom?.room_setting?.design_type}`)\n if (Util.isPreview()) {\n return `normal`\n }\n let designType = this.currentRoom?.room_setting?.design_type\n if (!designType) return\n // normal / seminar\n return designType || `normal`\n },\n getNotifications(): Promise {\n if (this.notifications) return Promise.resolve(this.notifications)\n\n return CustomNotification.get(`user`).then(dic => {\n this.notifications = dic.notification_dic\n this.noti_available_events = dic.available_events\n return dic.notification_dic\n })\n },\n isChukaiPlan(): boolean {\n return this.userInfo?.group_status == 2000\n },\n})\nexport default _RoomManager\n"],"names":["roomStorage","RoomStorage","_RoomManager","reactive","rooms","appointments","openRooms","currentRoom","currentAppointment","currentInstantRoom","currentMessageRoom","defaultAstag","astag","chukaiAstag","astags","shared_astags","wsConnection","memberDicPerRoom","messagesPerRoom","currentRoomMessages","cable","currentAstagStatus","didConnectCal","did_connect_ms_cal","did_connect_google_cal","can_use_google_meet","can_use_teams","can_use_zoom","calendar_account_name","support_waaq","plan_option","contact_list_registration_type","contact_list_expires_in_days","tutorial_phase","confirmed_new_message","confirmed_connect_cal","confirmed_quick_vote_tutorial","userInfo","user_setting","organization","fixed_this_month","fixed_last_month","fixed_owner_this_month","fixed_owner_last_month","namespace","logo_url","roomTabs","publishedNewRooms","pdm","PossibleDatesManager","refresher","Refresher","default_location","showPlanOptionModalWithName","email_domains","user_groups","changeable_user_groups","can_use_email_domain","email_name","hide_filled_fields","address_book","userFiles","loctags","locationNames","titles","templates","sharedLocationsDic","nextActionInRoomsDic","isResetFormForOwnerUg","guestKey","downloadableFiles","my_notifications","groupTags","tabGroupTags","progresses","astagsTab","invited_user_groups","invite_connect_key","aforms","spHeadersMenu","spSelectTab","notifications","noti_available_events","parent_room_group_id","lp_id","parg","getRoom","pid","roomType","tabName","page","_this","endpoint","params","tab_name","this","Logger","concat","funcName","axios","get","Util","prefixUrl","then","res","roomsData","data","room","_rooms","Room","fetchFromJson","user_id","mergeRooms","__spreadArray","updateLocalRoomsData","err","output","NotificationControl","showErrorMessage","getRooms","userFilter","isBlank","Promise","resolve","RoomTab","createAllTabs","tab","active_in_progress","has_next","getCurrentTabParams","includes","isPresent","groupTag","post","uf","user_filter","undefined","Notice","message","location","href","group_tag_id","newTab","updateCurrentTab","next_page","length","roomKey","fetchSelectedRoomKey","_i","rooms_1","keyId","updateCurrentInfo","room_id","_a","_b","children","childroom","memberDic","_c","_d","members","member","getSortFuncByTabName","getAvailableSchedule","checkAstag","parentId","parent_room_id","astagsData","user_info","AvailableScheduleTag","setAstags","org","resetCurrentInfo","selectAstag","did_connect_cal","UserSetting","LocationTag","userInfoData","RoomMember","setUserInfo","setMonthsInfo","tab_group_tags","AstagsTab","createNew","astags_tab_info","Const","chukaiFreePlan","invitedUgs","router","push","response","status","setupWebSocket","hasAsTag","isEmbeds","ActionCable","handshakeChannel","subscriptions","create","channel","connected","disconnected","rejected","received","publish_parent_room","handleWsEventForPublishParentRoom","update_parent_room","handleWsEventForUpdateParentRoom","mark_as_read","handleWsEventForMarkAsRead","new_message","handleWsEventForNewMessage","created_downloadable_file","handleWsEventForCreatedDownloadableFile","getMessages","room_type","id","isParent","parentRoomId","parent_id","messagesData","messages_dic","dic_1","Object","entries","forEach","_messagesDic","RoomMessage","insertMessagesPerRoom","messages","astag_id","updateMessageRoom","_room","find","r","progress_status","current_appointment","isPublic","isPreview","ast","owner_avaialble_schedule_tag_id","name","a","saveSelectedParentRoomId","setAstag","_e","_g","_croom","_f","defaultType","_astag","type","createDefaultAstag","setAppo","appo","save","saveAppointment","getParentRoom","currentMember","roomId","m","_member","last_read_message_id","last_read_message_created_at","last_read_at","mess","dic","roomMessages","system_type","fileId","deleted_file","file_id","deleteFileInMessages","updateNewMessage","files","createdFile","user_file","f","filter","unshift","updateFav","starred","updateRoomTabs","sortAutomatically","roomMessagesIds","map","el","index","splice","lastMessage","DateTime","fromSeconds","created_at","day","start_of_the_day","is_system","owner","is_owner","UserPermissionsOption","permitDisplay","unread_num","createAndPushMessage","mem","status_name","updated_at","expired_at","Appointment","needRefresh","is_owner_group","ownerUgId","owner_user_group_id","user_group_id","newRoom","public_room_id","pubId_1","updatedRoomIds","rooms_voted_num","public_id","deleteFromDraftTab","_tab","STATUS_DRAFT","assign","deleteFromPublicTab","setNewRoom","tabNameGroups","Array","prototype","apply","filterName","createDefault","_tab_rooms","_selfrooms","is_shared","fetchRoomTab","tabname","getAllAstags","selectedAstag","selected","addNewAstag","_ast","changeDefaultAstag","astags_1","getAstagDetail","astagId","shared_chukai_astags","has_detail","_astagId","_astag_dic","meeting_attendees_groups","shared_loctags","canUseOption","optionName","setNameIfUnable","available","PlanOption","getAddressBooks","wantNext","contact_lists","AddressBook","getContactList","contact_list_groups","ug_members","getContactListGroups","_","getTemplates","isGuest","MessageTemplate","tmps","getTitles","getUgMembers","getLocations","e","getLocationNames","getGroupTags","GroupTag","findUserGroupSetting","ugs","ug","user_group_setting","startProgress","prog","useProgress","start","endProgress","pop","finish","isProgressing","updateAstagsInfoWithTab","redirectTopIfChukaiFreePlan","redirectName","getAllAssignForms","AssignForm","forms","getAformDetail","aformId","aform","_fm","assign_conditions","designType","room_setting","design_type","getNotifications","CustomNotification","notification_dic","available_events","isChukaiPlan","group_status"],"sourceRoot":""}