{"version":3,"file":"main.js","mappings":"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C;kIAAhC,gCAAgC;YCjB7C,8HA+CM;;YA/C4B,8EAAc;;2CDDhD;CA4PC;AA1O4C;;;;;;;;;;;;;;;;AElB7C,gFAAgF;AAChF,0EAA0E;AAC1E,gEAAgE;AAEzD,IAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,sEAAsE;;;;;;;;;;;;;;;;;;ACfvB;AAGF;AACY;AAEzD,IAAI,6EAAsB,EAAE;IAC1B,6DAAc,EAAE,CAAC;CAClB;AAED,wEAAwB,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,aAAG,IAAI,cAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;;;;;;;;;;;ACXpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACnSA","sources":["./$_lazy_route_resources|lazy|groupOptions: {}|namespace object","./src/app/animations/global-animations.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/channel-app/channel-app-routing.module.ts","./src/app/channel-app/channel-app.module.ts","./src/app/channel-app/channel-homepage/channel-homepage.component.ts","./src/app/channel-app/channel-homepage/channel-homepage.component.html","./src/app/channel-app/channel-livestream/channel-livestream.component.ts","./src/app/channel-app/channel-livestream/channel-livestream.component.html","./src/app/channel-app/channel-primary/channel-primary.component.ts","./src/app/channel-app/channel-primary/channel-primary.component.html","./src/app/channel-app/manage-users/manage-users.component.ts","./src/app/channel-app/manage-users/manage-users.component.html","./src/app/conference-full-schedule/conference-full-schedule.component.ts","./src/app/conference-full-schedule/conference-full-schedule.component.html","./src/app/constants.ts","./src/app/contacts-app/contacts-app-routing.module.ts","./src/app/contacts-app/contacts-app.module.ts","./src/app/contacts-app/contacts-homepage/contacts-homepage.component.ts","./src/app/contacts-app/contacts-homepage/contacts-homepage.component.html","./src/app/core/auth.interceptor.ts","./src/app/core/auth.service.ts","./src/app/core/utils.ts","./src/app/element-examples/element-examples.component.ts","./src/app/element-examples/element-examples.component.html","./src/app/events-app/events-app-routing.module.ts","./src/app/events-app/events-app.module.ts","./src/app/events-app/events-homepage/events-homepage.component.ts","./src/app/events-app/events-homepage/events-homepage.component.html","./src/app/fax-app/fax-app-routing.module.ts","./src/app/fax-app/fax-app.module.ts","./src/app/fax-app/fax-homepage/fax-homepage.component.ts","./src/app/fax-app/fax-homepage/fax-homepage.component.html","./src/app/file-storage-app/file-storage-app-routing.module.ts","./src/app/file-storage-app/file-storage-app.module.ts","./src/app/file-storage-app/file-storage-homepage/file-storage-homepage.component.ts","./src/app/file-storage-app/file-storage-homepage/file-storage-homepage.component.html","./src/app/helpers/channel-selected.validator.ts","./src/app/helpers/must-match.validator.ts","./src/app/home/home.component.ts","./src/app/home/home.component.html","./src/app/home/pagenotfound.component.ts","./src/app/home/pagenotfound.component.html","./src/app/home/signin-redirect-callback.component.ts","./src/app/home/signout-redirect-callback.component.ts","./src/app/home/unauthorized.component.ts","./src/app/home/unauthorized.component.html","./src/app/jitsi-call-manager/jitsi-call-manager.component.ts","./src/app/jitsi-call-manager/jitsi-call-manager.component.html","./src/app/login-conference/login-conference.component.ts","./src/app/login-conference/login-conference.component.html","./src/app/login/login.component.ts","./src/app/login/login.component.html","./src/app/message-app/message-app.module.ts","./src/app/message-app/message-compose/message-compose.component.ts","./src/app/message-app/message-compose/message-compose.component.html","./src/app/message-app/message-sidebar-selected/message-sidebar-selected.component.ts","./src/app/message-app/message-sidebar-selected/message-sidebar-selected.component.html","./src/app/message-app/message-sidebar/message-sidebar.component.ts","./src/app/message-app/message-sidebar/message-sidebar.component.html","./src/app/model/auth-context.ts","./src/app/navigation-overlay/navigation-overlay.component.ts","./src/app/navigation-overlay/navigation-overlay.component.html","./src/app/pipes/byte-convert.pipe.ts","./src/app/pipes/channel-card-avatars.pipe.ts","./src/app/pipes/channel-folder.pipe.ts","./src/app/pipes/channel-owner-compare.pipe.ts","./src/app/pipes/check-input-length.pipe.ts","./src/app/pipes/compare-strings-pipe.ts","./src/app/pipes/default-image-overlay.pipe.ts","./src/app/pipes/fax-folder-name.pipe.ts","./src/app/pipes/file-name.pipe.ts","./src/app/pipes/folder-name.pipe.ts","./src/app/pipes/format-phone-number.pipe.ts","./src/app/pipes/highlight.pipe.ts","./src/app/pipes/last-message.pipe.ts","./src/app/pipes/media-width-check.pipe.ts","./src/app/pipes/meeting-duration.pipe.ts","./src/app/pipes/message-with-image.ts","./src/app/pipes/message-with-links.ts","./src/app/pipes/quickmeeting-channel-name.pipe.ts","./src/app/pipes/status-display.pipe.ts","./src/app/pipes/test-list-length.pipe.ts","./src/app/pipes/time-ago.pipe.ts","./src/app/pipes/user-status-name.pipe.ts","./src/app/services/alerts.service.ts","./src/app/services/api-calls.service.ts","./src/app/services/app-intake.service.ts","./src/app/services/channel-service.ts","./src/app/services/connection-manager.service.ts","./src/app/services/contacts.service.ts","./src/app/services/file-storage.service.ts","./src/app/services/guest.service.ts","./src/app/services/meeting.service.ts","./src/app/services/modal.service.ts","./src/app/services/project-channel.service.ts","./src/app/services/sockets.service.ts","./src/app/services/subcription.service.ts","./src/app/services/system-notification.service.ts","./src/app/services/toast-notification.service.ts","./src/app/services/twillio.service.ts","./src/app/shared/components/account-email-invite/account-email-invite.component.ts","./src/app/shared/components/account-email-invite/account-email-invite.component.html","./src/app/shared/components/alerts-settings/alerts-settings.component.ts","./src/app/shared/components/alerts-settings/alerts-settings.component.html","./src/app/shared/components/alerts/alerts.component.ts","./src/app/shared/components/alerts/alerts.component.html","./src/app/shared/components/amp-player/amp-player.component.ts","./src/app/shared/components/amp-player/amp-player.component.html","./src/app/shared/components/channel-info/channel-info.component.ts","./src/app/shared/components/channel-info/channel-info.component.html","./src/app/shared/components/channels-history/channels-history.component.ts","./src/app/shared/components/channels-history/channels-history.component.html","./src/app/shared/components/chat-component/chat.component.ts","./src/app/shared/components/chat-component/chat.component.html","./src/app/shared/components/connection-overlay/connection-overlay.component.ts","./src/app/shared/components/connection-overlay/connection-overlay.component.html","./src/app/shared/components/contact-info/contact-info.component.ts","./src/app/shared/components/contact-info/contact-info.component.html","./src/app/shared/components/contacts/contacts.component.ts","./src/app/shared/components/contacts/contacts.component.html","./src/app/shared/components/create-channel/create-channel.component.ts","./src/app/shared/components/create-channel/create-channel.component.html","./src/app/shared/components/create-contact/create-contact.component.ts","./src/app/shared/components/create-contact/create-contact.component.html","./src/app/shared/components/create-project/create-project.component.ts","./src/app/shared/components/create-project/create-project.component.html","./src/app/shared/components/device-check/device-check.component.ts","./src/app/shared/components/device-check/device-check.component.html","./src/app/shared/components/emoji-button/emoji-button.component.ts","./src/app/shared/components/emoji-button/emoji-button.component.html","./src/app/shared/components/events/events.component.ts","./src/app/shared/components/events/events.component.html","./src/app/shared/components/file-storage/file-storage.component.ts","./src/app/shared/components/file-storage/file-storage.component.html","./src/app/shared/components/guest-sign-out/guest-sign-out.component.ts","./src/app/shared/components/guest-sign-out/guest-sign-out.component.html","./src/app/shared/components/jitsi-video/jitsi-video.component.ts","./src/app/shared/components/jitsi-video/jitsi-video.component.html","./src/app/shared/components/kurento-video/kurento-video.component.ts","./src/app/shared/components/kurento-video/kurento-video.component.html","./src/app/shared/components/live-streaming-video/live-streaming-video.component.ts","./src/app/shared/components/live-streaming-video/live-streaming-video.component.html","./src/app/shared/components/loading-home/loading-home.component.ts","./src/app/shared/components/loading-home/loading-home.component.html","./src/app/shared/components/meeting-info/meeting-info.component.ts","./src/app/shared/components/meeting-info/meeting-info.component.html","./src/app/shared/components/mike-kurento/mike-kurento.component.ts","./src/app/shared/components/mike-kurento/mike-kurento.component.html","./src/app/shared/components/profile-img-upload/profile-img-upload.component.ts","./src/app/shared/components/profile-img-upload/profile-img-upload.component.html","./src/app/shared/components/rtc-video/rtc-video.component.ts","./src/app/shared/components/rtc-video/stream-errors/stream-errors.component.ts","./src/app/shared/components/schedule-meeting/schedule-meeting.component.ts","./src/app/shared/components/schedule-meeting/schedule-meeting.component.html","./src/app/shared/components/time-difference/time-difference.component.ts","./src/app/shared/components/time-difference/time-difference.component.html","./src/app/shared/components/twilio-video/twilio-video.component.ts","./src/app/shared/components/twilio-video/twilio-video.component.html","./src/app/shared/functions.ts","./src/app/shared/modal/modal.component.ts","./src/app/shared/modal/modal.component.html","./src/app/shared/shared.module.ts","./src/app/shared/varaibles.ts","./src/app/sidebar-overlay/sidebar-overlay.component.ts","./src/app/sidebar-overlay/sidebar-overlay.component.html","./src/app/toast-notification/toast-notification-component/toast-notification.component.ts","./src/app/toast-notification/toast-notification-component/toast-notification.component.html","./src/app/toast-notification/toast-notification.model.ts","./src/app/toast-notification/toast-notification.module.ts","./src/app/user-app/user-app.module.ts","./src/app/user-app/user-sidebar/user-sidebar.component.ts","./src/app/user-app/user-sidebar/user-sidebar.component.html","./src/app/vdjj-video-intake-app/vdjj-video-intake-app-routing.module.ts","./src/app/vdjj-video-intake-app/vdjj-video-intake-app.module.ts","./src/app/vdjj-video-intake-app/vdjj-video-intake-chat-ao/vdjj-video-intake-chat-ao.component.ts","./src/app/vdjj-video-intake-app/vdjj-video-intake-chat-ao/vdjj-video-intake-chat-ao.component.html","./src/app/vdjj-video-intake-app/vdjj-video-intake-chat-io/vdjj-video-intake-chat-io.component.ts","./src/app/vdjj-video-intake-app/vdjj-video-intake-chat-io/vdjj-video-intake-chat-io.component.html","./src/app/vdjj-video-intake-app/vdjj-video-intake-homepage/vdjj-video-intake-homepage.component.ts","./src/app/vdjj-video-intake-app/vdjj-video-intake-homepage/vdjj-video-intake-homepage.component.html","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale|sync|/^/.*$","ignored|D:\\a\\1\\s\\node_modules\\@azure\\storage-blob\\dist-esm\\storage-blob\\src|os"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","// export transitions global \r\nimport { trigger, transition, style, animate, group, animateChild, query, stagger, keyframes } from '@angular/animations';\r\n\r\n/* 🌎 global anime: these are used globaly and are ment to be re-useable,\r\n please do not modify an animation for single use, create a new one ... */\r\n\r\n\r\nexport const fadeIn = trigger('fadeIn', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0\r\n }),\r\n animate(200, style({\r\n opacity: 1\r\n }))\r\n ])\r\n]);\r\n\r\nexport const fadeInFast = trigger('fadeInFast', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0\r\n }),\r\n animate(62, style({\r\n opacity: 1\r\n }))\r\n ])\r\n]);\r\n\r\n// fade in-out (:leave) GOOD *but with catch* - IF - ELEMENT IS CONDITIONALLY OCCUPYING SAME SPACE AS ANOTHER \r\n// YOU NEED TO DELAY OTHER ELEMENT FROM ENTERING DOM, THIS CAN BE DONE BY DECLARING A BOOL - \r\n// in .ts - isAnimationRunning: bool; \r\n// in .html - (@someAnimation.start)=\"isAnimationRunning = true\" \r\n// && (@someAnimation.done)=\"isAnimationRunning = false\" \r\n// ON ELEMENT YOU WISH TO DELAY - \r\n// \r\n// \r\n// ℹ ~ THIS APPLYS TO ANY ANIME WITH A :leave transition <-----<<<|) \r\n//\r\nexport const fadeInOut = trigger('fadeInOut', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0\r\n }),\r\n animate(200, style({\r\n opacity: 1\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1\r\n }),\r\n animate(150, style({\r\n opacity: 0\r\n }))\r\n ])\r\n]);\r\n\r\n\r\n\r\n\r\n\r\n// \r\n\r\nexport const slideInLeft = trigger('slideInLeft', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateX(-1rem)'\r\n }),\r\n group([\r\n animate(300, style({\r\n opacity: 1\r\n })),\r\n animate(500, style({\r\n transform: 'translateX(0rem)'\r\n }))\r\n ])\r\n ])\r\n]);\r\n\r\nexport const slideInRight = trigger('slideInRight', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateX(1rem)'\r\n }),\r\n group([\r\n animate(300, style({\r\n opacity: 1\r\n })),\r\n animate(500, style({\r\n transform: 'translateX(0rem)'\r\n }))\r\n ])\r\n ])\r\n]);\r\n\r\nexport const slideInTop = trigger('slideInTop', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateY(1rem)'\r\n }),\r\n group([\r\n animate(300, style({\r\n opacity: 1\r\n })),\r\n animate(500, style({\r\n transform: 'translateY(0rem)'\r\n }))\r\n ])\r\n ])\r\n]);\r\n\r\nexport const slideInBottom = trigger('slideInBottom', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateY(-1rem)'\r\n }),\r\n group([\r\n animate(300, style({\r\n opacity: 1\r\n })),\r\n animate(500, style({\r\n transform: 'translateY(0rem)'\r\n }))\r\n ])\r\n ])\r\n]);\r\n\r\n\r\n\r\n\r\n\r\n// set transform-origin on element for this one rotateInOut \r\n\r\nexport const rotateInOut = trigger('rotateInOut', [\r\n transition(':enter', [\r\n style({\r\n transform: 'rotate(70deg)',\r\n opacity: 0\r\n }),\r\n animate(200, style({\r\n transform: 'rotate(0deg)',\r\n opacity: 1\r\n }))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n transform: 'rotate(0deg)',\r\n opacity: 1\r\n }),\r\n animate(150, style({\r\n transform: 'rotate(45deg)',\r\n opacity: 0\r\n }))\r\n ])\r\n]);\r\n\r\n\r\n\r\n\r\n\r\n// 🔥 list stagger animation \r\n\r\n// decorate the element that WRAPS the *ngFor element with '@listAnimationWrap' set to variable if list is dynamic \r\nexport const listAnimationWrap = trigger('listAnimationWrap', [\r\n transition('* => *', [\r\n query('@listAnimationItem', [\r\n stagger(32, [\r\n animateChild()\r\n ])\r\n ], { optional: true }),\r\n // query('@*', animateChild(), {optional: true}) // added to trigger *all nested animations when run ...\r\n ])\r\n]);\r\n// decorate the element that is also decorated with the *ngFor with '@listAnimationItem' \r\nexport const listAnimationItem = trigger('listAnimationItem', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0\r\n }),\r\n animate(62, style({\r\n opacity: 1\r\n })),\r\n query('@listAnimationWrapLong', animateChild(), {optional: true})\r\n ])\r\n]);\r\n\r\n// list stagger example \r\n\r\n//
\r\n//
this is the list item
\r\n//
\r\n\r\n// when the list is loaded the animation runs all items, if a new item is added that item is animated \r\nexport const listAnimationWrapLong = trigger('listAnimationWrapLong', [\r\n transition('* => *', [\r\n query('@listAnimationItemLong', [\r\n stagger(132, [\r\n animateChild()\r\n ])\r\n ], { optional: true }),\r\n \r\n ])\r\n]);\r\nexport const listAnimationItemLong = trigger('listAnimationItemLong', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0\r\n }),\r\n animate(162, style({\r\n opacity: 1\r\n })),\r\n query('@listAnimationWrapAvatar', animateChild(), {optional: true}) // added to trigger nested avitar stagger animation when run ...\r\n ])\r\n]);\r\n\r\n// for AVATAR stack ... is triggered when listAnimationItemLong.done ... needs 'row-reverse' to work properly ... \r\nexport const listAnimationWrapAvatar = trigger('listAnimationWrapAvatar', [\r\n transition('* => *', [\r\n query('@listAnimationItemAvatar', [\r\n stagger(-62, [\r\n animateChild()\r\n ])\r\n ], { optional: true }),\r\n query('@fadeIn', animateChild(), {optional: true}) // added to trigger nested fadeIn animations when run ... for +10 users \r\n ])\r\n]);\r\n// decorate the element that is also decorated with the *ngFor with '@listAnimationItem' \r\nexport const listAnimationItemAvatar = trigger('listAnimationItemAvatar', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0\r\n }),\r\n animate(92, style({\r\n opacity: 1\r\n }))\r\n ])\r\n]);\r\n// \r\n\r\n\r\n\r\n\r\n\r\n// Toast notification Enter / Leave \r\nexport const toastNotification = trigger('toastNotification', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n transform: 'scale3d(0.8, 0.8, 0.8)'\r\n }),\r\n animate('300ms ease-in-out', keyframes([\r\n style({\r\n offset: .5,\r\n opacity: 0.9,\r\n transform: 'scale3d(1.1, 1.1, 1.1)'\r\n }),\r\n style({\r\n offset: 1,\r\n transform: 'scale3d(1, 1, 1)'\r\n })\r\n ]))\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n transform: 'scale3d(1, 1, 1)'\r\n }),\r\n animate('300ms ease-in', style({\r\n opacity: 0,\r\n height: 0,\r\n transform: 'scale3d(0.4, 0.4, 0.4)'\r\n }))\r\n ])\r\n]);\r\n\r\n\r\n\r\n\r\n\r\n// 🗣 direct message popup \r\n\r\nexport const messagePopup = trigger('messagePopup', [\r\n transition(':enter', [\r\n style({\r\n width: '0rem',\r\n transform: 'translateY(100%)'\r\n }),\r\n animate('300ms ease-out', style({\r\n width: '37.5rem',\r\n transform: 'translateY(0%)'\r\n }))\r\n ])\r\n]);\r\n\r\n\r\n// 💡 custom exit animation exported as function to use in .ts files ... \r\n// i use this for when an item is removed / deleted from list ... \r\n\r\n// @describe: slide-out removed el & slide up next el in array if !!el ...\r\n\r\n// @params: 1: the element to be removed | 2: next element in array (if any) ... \r\n\r\n// @exampleInput: let element = document.getElementsByClassName('meetings-container')[meetingIdx];\r\n// let element2 = document.getElementsByClassName('meetings-container')[meetingIdx + 1] || null;\r\nexport function customExitTransition(element:HTMLElement, element2: HTMLElement): void {\r\n // let el = document.getElementById(elementId);\r\n element.animate([\r\n { opacity: 0.4, transform: 'translateX(0)' },\r\n { opacity: 0, transform: 'translateX(200%)' }\r\n ], {\r\n duration: 262,\r\n easing: 'ease-in'\r\n });\r\n if(!!element2) {\r\n setTimeout(() => {\r\n element2.animate([\r\n { transform: 'translateY(3.33rem)' },\r\n { transform: 'translateY(0rem)' }\r\n ], {\r\n duration: 162,\r\n easing: 'ease-in'\r\n });\r\n }, 262);\r\n } else return;\r\n};\r\n\r\n\r\n// ❌ not in use yet ... \r\nexport function customExitAllTransition(elements): void {\r\n // \r\n console.log(\"elements {}\",elements)\r\n for(let el of elements) {\r\n console.log(el)\r\n }\r\n}\r\n\r\n\r\n// example js animate ... \r\n// info.animate([\r\n// { opacity: 0, transform: 'scale(0)' },\r\n// { opacity: 1, transform: 'scale(1)' }\r\n// ], {\r\n// duration: 172,\r\n// easing: 'ease-out'\r\n// });\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// 👾 cote 2021 ","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n// import { PageNotFoundComponent } from './home/pagenotfound.component'; // 🚧 imported in app.mod but not used ...\r\n\r\n\r\nimport { HomeComponent } from './home/home.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { UnauthorizedComponent } from './home/unauthorized.component';\r\n\r\nimport { SigninRedirectCallbackComponent } from './home/signin-redirect-callback.component';\r\nimport { SignoutRedirectCallbackComponent } from './home/signout-redirect-callback.component';\r\n\r\nimport { ElementExamplesComponent } from './element-examples/element-examples.component';\r\n\r\n// 🎉 TEMP FOR CONFERENCE \r\nimport { LoginConferenceComponent } from './login-conference/login-conference.component';\r\nimport { ConferenceFullScheduleComponent } from './conference-full-schedule/conference-full-schedule.component';\r\n\r\nimport { AlertsSettingsComponent } from './shared/components/alerts-settings/alerts-settings.component';\r\nimport { GuestService } from './services/guest.service';\r\n\r\n\r\n\r\nconst routes: Routes = [\r\n { path: '', redirectTo: 'home', pathMatch: 'full'},\r\n { path: 'home', component: HomeComponent },\r\n { path: 'login', component: LoginComponent },\r\n { path: 'conference-signin', component: LoginConferenceComponent },\r\n { path: 'NDIA-full-schedule', component: ConferenceFullScheduleComponent },\r\n { path: 'meetingInvite', component: HomeComponent},\r\n // 💡 NEW \r\n { path: 'alert-settings', component: AlertsSettingsComponent },\r\n \r\n { path: 'unauthorized', component: UnauthorizedComponent },\r\n \r\n { path: 'signin-callback', component: SigninRedirectCallbackComponent },\r\n { path: 'signout-callback', component: SignoutRedirectCallbackComponent }, // RE-DIRECTS TO LOGIN COMPONENT \r\n \r\n // new examples // anyone can see if they know url ... \r\n { path: 'examples', component: ElementExamplesComponent },\r\n \r\n // 🚧 testing ... wildcard route ? eg: if user types something invalid to url ? \r\n // { path: '**', component: PageNotFoundComponent } // should implement 404 not found page? ... \r\n // this just re-directs to home if url invalid ... \r\n];\r\n\r\n@NgModule({ \r\n imports: [RouterModule.forRoot(routes, { enableTracing: true, relativeLinkResolution: 'legacy' }), CommonModule],\r\n exports: [RouterModule] \r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Constants } from '../app/constants';\r\nimport { AuthService } from './core/auth.service';\r\nimport { Router, NavigationEnd, RouterEvent } from '@angular/router';\r\nimport { ChannelService } from './services/channel-service';\r\nimport { ApiCallsService } from './services/api-calls.service';\r\nimport { filter } from 'rxjs/operators';\r\nimport { SocketsService } from './services/sockets.service';\r\nimport { ToastNotificationService } from './services/toast-notification.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ChannelUser } from './shared/interface/channel-user';\r\nimport { consoleLogStyle } from '../app/shared/varaibles';\r\nimport { SystemNotificationService } from './services/system-notification.service';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { userInfo } from 'os';\r\nimport { constants } from 'buffer';\r\n\r\n// GOOGLE ANALITICS TAG ... \r\ndeclare var gtag; // \r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent implements OnInit, OnDestroy {\r\n\r\n // public pinnedSideBar: boolean = false;\r\n public showSidebar: boolean = false;\r\n public changeTheme: any = {\r\n \"op\": \"replace\",\r\n \"path\": \"/themeName\",\r\n \"value\": \"\"\r\n };\r\n public darkMode: boolean;\r\n public themeList = [\r\n \"theme-dark\",\r\n \"theme-light\",\r\n \"theme-reader\"\r\n ]\r\n\r\n public theme = 'theme-light';\r\n\r\n public _isSignedIn = false;\r\n public socketServers: any = [];\r\n public userStatus: string = \"none\";\r\n public channelUserInfo: ChannelUser = { // should not need initial value if !! is checked in template ... \r\n \"channelUserId\": null,\r\n \"displayName\": \"\",\r\n \"username\": \"\",\r\n \"hash\": \"1\"\r\n };\r\n public channelId: string;\r\n public sidebarContainerAppType: string = \"\";\r\n\r\n public subscriptions: Subscription[] = [];\r\n public systemNotificationsSubscriptions: Subscription[] = [];\r\n\r\n public isGuest: boolean = this._authService._userInfo?.role.some(role => role.toLowerCase() === 'guest');\r\n public isViewer: boolean = this._authService._userInfo?.role.some(role => role.toLowerCase() === 'viewer'); // NDIA\r\n\r\n public backupSignInCheck = false;\r\n public inChannel: boolean;\r\n\r\n constructor(\r\n private _router: Router,\r\n private _authService: AuthService,\r\n private _apiService: ApiCallsService,\r\n public _channelService: ChannelService,\r\n private _socketService: SocketsService,\r\n private _toastService: ToastNotificationService,\r\n private _systemNotifications: SystemNotificationService,\r\n // private _userAgent: UserAgentService, // use Angular Platform CDK instead ... \r\n private _platform: Platform,\r\n ) {\r\n this.handleScreenCheck();\r\n const navEndEvents = _router.events.pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n );\r\n navEndEvents.subscribe((event: NavigationEnd) => {\r\n if (Constants.isProd) {\r\n gtag('config', 'UA-7402680-8', {\r\n 'page_path': event.urlAfterRedirects\r\n });\r\n }\r\n });\r\n\r\n //For unlocking audio on load\r\n const audioCtx = new AudioContext();\r\n this.unlockAudioContext(audioCtx);\r\n\r\n\r\n\r\n this.subscriptions.push(\r\n this._channelService.onJoinedPageEvent$.subscribe((channelId: any) => {\r\n // console.log(\"JoinedPageEvent app component: \" + channelId);\r\n this.channelId = channelId;\r\n }));\r\n\r\n\r\n this.subscriptions.push(\r\n this._authService.signInChanged$.subscribe(signedIn => {\r\n // console.log(\"constructor sign in change: \" + signedIn);\r\n if (this._isSignedIn !== signedIn) {\r\n this._isSignedIn = signedIn;\r\n //Used if signIn is dealayed\r\n if (this._isSignedIn && this.backupSignInCheck) {\r\n this.backupSignInCheck = false;\r\n this._channelService.Initialize().then(() => {\r\n this._channelService.join(\"\");\r\n });\r\n this._getChannelUserInfo(this._authService._userInfo.sub);\r\n\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(\r\n this._authService.userChange$.subscribe(user => {\r\n this.isGuest = this._authService._userHighestRole === \"Guest\";\r\n this.isViewer = this._authService._userHighestRole === \"Viewer\"; // NDIA - Streaming\r\n // console.log(\"User Change!!!!!!!\");\r\n if (this._isSignedIn) {\r\n this.backupSignInCheck = false;\r\n this._channelService.Initialize().then(() => {\r\n this._channelService.join(\"\");\r\n });\r\n this._getChannelUserInfo(this._authService._userInfo.sub);\r\n } else {\r\n this.backupSignInCheck = true;\r\n }\r\n })\r\n );\r\n\r\n if (window.location.href.indexOf('?postLogout=true') > -1) {\r\n this._authService.signoutRedirectCallback().then(() => {\r\n const url: string = this._router.url.substring(\r\n 0,\r\n this._router.url.indexOf('?')\r\n );\r\n // console.log(\"Navigating!!!!!!!1\")\r\n this._router.navigateByUrl(url);\r\n });\r\n }\r\n\r\n \r\n\r\n this.subscriptions.push(\r\n this._channelService.onUpdateUserStatusEvent$.subscribe((channelUserStatusList: any) => {\r\n channelUserStatusList.forEach(channelUser => {\r\n if (this.channelUserInfo.username) {\r\n if (this.channelUserInfo.username.toLowerCase() === channelUser.username.toLowerCase()) {\r\n // console.log(\"%c sig r event triggered: userstatus \", this.consoleLogStyle)\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n this.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n this.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n this.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n this.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n this.userStatus = \"hidden\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n this.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n this.userStatus = \"brb\";\r\n }\r\n this._authService._userStatus = this.userStatus;\r\n }\r\n } else {\r\n console.error(\"Could not find username\", this.channelUserInfo);\r\n }\r\n });\r\n }));\r\n\r\n this.subscriptions.push(\r\n this._channelService.onSidebarAppSelectEvent$.subscribe(value => {\r\n this.sidebarContainerAppType = value;\r\n }));\r\n\r\n this.subscriptions.push(\r\n this._channelService.onSidebarDisplayEvent$.subscribe(show => {\r\n this.sidebarDisplay(show);\r\n }));\r\n\r\n this.subscriptions.push(\r\n this._channelService.onNoClientErrorEvent$.subscribe(() => {\r\n this._toastService.error(\"Your session has timed out. Please go to the home page to refresh.\");\r\n }));\r\n\r\n // this.subscriptions.push(\r\n // this._authService.updateChannelUserInfo$.subscribe(() => {\r\n // console.log(\"user info changed\");\r\n // this._getChannelUserInfo(this._authService._user.profile.sub);\r\n // }));\r\n\r\n\r\n this.subscriptions.push(\r\n this._router.events\r\n .subscribe((event: RouterEvent) => {\r\n // see also \r\n if (event instanceof NavigationEnd) {\r\n this.inChannel = event.url.toLowerCase().startsWith(\"/channel/\") ? true : false;\r\n // console.log(event);\r\n }\r\n })\r\n );\r\n\r\n if (!this._platform.IOS && !this._platform.ANDROID && !this._platform.SAFARI) {\r\n this.subscriptions.push(this._systemNotifications.onSettingsTosub$\r\n .subscribe((settingsToSub) => {\r\n this.systemNotificationsSubscriptions.forEach(subscription => subscription.unsubscribe());\r\n // 💡 create new array of subs for settings ... \r\n // console.info('%c settings to sub to in app constructor update? ', consoleLogStyle, settingsToSub)\r\n settingsToSub.forEach(setting => {\r\n switch (setting) {\r\n // sub to each event type here ... \r\n case \"Added to a channel as member\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n case \"Added to a channel as owner\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n case \"Added to a meeting\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n // 🚧 for local - When received \r\n case \"Received unread direct messages\": {\r\n this.systemNotificationsSubscriptions.push(this._channelService.onUnreadDirectMessageNotification$\r\n .subscribe((notiObj) => {\r\n // console.log(\"%c UNREAD MESSAGE EVENT, notiObj to set noti \", consoleLogStyle, notiObj)\r\n if (notiObj.message) { // if not this event also fires when you open the unread dm ... \r\n this._systemNotifications\r\n .showNewNotification(\r\n notiObj.numUnreadMessages < 2 ?\r\n `${notiObj.message.channelUserKeyNavigation.displayName} has sent a new message` :\r\n `${notiObj.message.channelUserKeyNavigation.displayName} has sent ${notiObj.numUnreadMessages} new messages`, // message\r\n 'unread message', // type is for routing (not used yet, only if req to nav to full dm) ... \r\n notiObj.message.channelUserKeyNavigation.hash === '1' ?\r\n null : `https://profile-images.azureedge.us/${notiObj.message.channelUserKeyNavigation.hash}` // ...\r\n );\r\n }\r\n }));\r\n break;\r\n }\r\n case \"Meeting is cancelled\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n case \"Meeting is rescheduled\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n case \"New user has registered \": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n case \"Fax received\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n case \"File uploaded to channel\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n case \"Mentioned (with @) in chat\": {\r\n // this._systemNotifications.showNewNotification('You will now be notified')\r\n break;\r\n }\r\n default: {\r\n return;\r\n }\r\n }\r\n });\r\n }));\r\n }\r\n\r\n this.subscriptions.push(this._channelService.onUnreadDirectMessageNotification$\r\n .subscribe(notiObj => {\r\n // console.log(\"navigation overlay unread message badge \", notiObj);\r\n if (notiObj.message) { // if not this event also fires when you open the unread dm ... \r\n this._toastService.info(notiObj.numUnreadMessages < 2 ?\r\n `${notiObj.message.channelUserKeyNavigation.displayName} has sent a new message` :\r\n `${notiObj.message.channelUserKeyNavigation.displayName} has sent ${notiObj.numUnreadMessages} new messages`);\r\n }\r\n })\r\n );\r\n }\r\n\r\n\r\n ngOnInit() {\r\n\r\n // console.log(\"%c eniornment prod? \", consoleLogStyle, environment.production)\r\n this._authService.isSignedIn(true).then(signedIn => {\r\n this._isSignedIn = signedIn;\r\n this._authService.signInSilent();\r\n // console.log(\"constructor in Init, IsSignedIn: \" + this._isSignedIn);\r\n if (!this._isSignedIn) {\r\n \r\n\r\n if (window.location.href.indexOf('meetingInvite') < 0 && window.location.href.indexOf('signin-callback') < 0 && window.location.href.indexOf('guest=') < 0 && window.location.href.indexOf('login') < 0) {\r\n this._authService.signIn();\r\n }\r\n\r\n // if (this._authService._userInfo && window.location.href.indexOf('ReturnUrl') < 0 && window.location.href.indexOf('signin-callback') < 0 && window.location.href.indexOf('guest=') < 0 && window.location.href.indexOf('login') < 0) {\r\n // //might come back ass unathorized\r\n // this._getChannelUserInfo(this._authService._userInfo.sub);\r\n // }\r\n // else if (window.location.href.indexOf('login') > 0) {\r\n // //If Initial SignOut in false but userfInfo is found\r\n // console.log(\"Signed out, on login\")\r\n // } else if (this._authService._userInfo && ()) {\r\n // //If Initial SignOut in false but userfInfo is found\r\n // console.log(\"Signed Out, but has userInfo\")\r\n // } else if (true) {\r\n // console.log(\"in time out section of app comp\")\r\n // }\r\n } \r\n // else {\r\n // if (this._authService._userInfo) {\r\n // // this._getChannelUserInfo(this._authService._userInfo.sub);\r\n // //asd\r\n // }\r\n // }\r\n });\r\n // console.log(\"isMobile Device: \", this._channelService._isMobileDevice); // \r\n // console.info(\"%c Platform from mat-cdk? : \", consoleLogStyle, this._platform);\r\n this.themeInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n this.systemNotificationsSubscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n _getActiveSocketServers(): Promise {\r\n return this._socketService.getActiveSocketServers()\r\n .toPromise()\r\n .then(data => {\r\n // console.log(\"Getactivesocketservers vdjjhomepage\" + JSON.stringify(data.body));\r\n this.socketServers = data.body;\r\n })\r\n .catch(err => console.log(err));\r\n }\r\n\r\n // called on init \r\n _getMembershipUserInfo2() {\r\n this._authService.getMembershipUserInfo()\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // this.userInfo = data;\r\n // console.log(\"%c 💙 got membership info AUTH ... \", consoleLogStyle, data);\r\n this._getChannelUserInfo(data.body.sub);\r\n } else {\r\n console.error(\"error getting user info\", data);\r\n }\r\n });\r\n }\r\n\r\n _getChannelUserInfo(id?: string) { // using id from within authService ... \r\n this._authService.getChannelUserInfo()\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.channelUserInfo = data.body;\r\n this._authService._channelUserInfo = this.channelUserInfo;\r\n // console.log(\"%c 👤 ChannelUser info from APP component \", consoleLogStyle, this.channelUserInfo)\r\n let user = this.channelUserInfo;\r\n if (user.selectedStatus === 0) {\r\n if (user.presenceStatus === 0) {\r\n this.userStatus = \"offline\";\r\n } else if (user.presenceStatus === 1) {\r\n this.userStatus = \"away\";\r\n } else if (user.presenceStatus === 2) {\r\n this.userStatus = \"active\";\r\n } else if (user.presenceStatus === 3) {\r\n //Temp for incall\r\n this.userStatus = \"active\";\r\n }\r\n } else if (user.selectedStatus === 1) {\r\n this.userStatus = \"hidden\";\r\n } else if (user.selectedStatus === 2) {\r\n this.userStatus = \"dnd\";\r\n } else if (user.selectedStatus === 3) {\r\n this.userStatus = \"brb\";\r\n }\r\n this._authService._userStatus = this.userStatus;\r\n this._authService.channelUserInfoHasChanged();\r\n // 🚧🚧🚧 sub to Alert events here to trigger system notfications \r\n // console.info(\"%c Platform? \", consoleLogStyle, this._platform);\r\n if (!this._platform.IOS && !this._platform.ANDROID && !this._platform.SAFARI) {\r\n // console.info(\"%c not ios|android|safari, can use NotificationAPI \", consoleLogStyle, this._platform);\r\n if (this._systemNotifications.hasSystemNotifications) {\r\n if (this._systemNotifications.isPermissionGranted) {\r\n // need to check settings for allowed noti's ... \r\n this._systemNotifications.getSystemAlertsSettings(this.channelUserInfo.channelUserId);\r\n }\r\n }\r\n }\r\n } else {\r\n console.error(\"%c [APP] error in getting user info?\", consoleLogStyle, data);\r\n }\r\n });\r\n }\r\n\r\n // Theme functions \r\n themeInit() {\r\n let localTheme = localStorage.getItem(\"theme\");\r\n if (localTheme !== null && this.themeList.includes(localTheme)) {\r\n this.theme = localTheme;\r\n }\r\n // 😢 user info not fast enough for this to work ... \r\n else if (this.channelUserInfo.themeName) {\r\n this.theme = this.channelUserInfo.themeName;\r\n }\r\n else {\r\n // console.log(\"local theme not found\")\r\n this.theme = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? \"theme-dark\" : \"theme-light\";\r\n }\r\n document.getElementsByTagName(\"BODY\")[0].setAttribute(\"data-theme\", this.theme);\r\n }\r\n\r\n themeModeSet(theme: string) {\r\n if (this.themeList.includes(theme)) {\r\n this.theme = theme;\r\n document.getElementsByTagName(\"BODY\")[0].setAttribute(\"data-theme\", this.theme);\r\n this.updateTheme();\r\n }\r\n }\r\n\r\n updateTheme() {\r\n this.changeTheme.value = this.theme;\r\n // console.log(\"setting theme to \" + this.theme + \"!\");\r\n localStorage.setItem(\"theme\", this.theme);\r\n this._apiService.patchChannelUser(this.channelUserInfo.channelUserId, this.changeTheme)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n document.getElementsByTagName(\"BODY\")[0].setAttribute(\"data-theme\", this.theme);\r\n } else {\r\n console.error(\"error updating theme\", res);\r\n }\r\n });\r\n }\r\n\r\n // setPinned() {\r\n // let localPinned = JSON.parse(localStorage.getItem(\"side-pinned\"));\r\n // if (localPinned) {\r\n // this.pinnedSideBar = true;\r\n // }\r\n // }\r\n\r\n sidebarDisplay(show: boolean) {\r\n // console.log(\"sideDisplay!!!!!\", show)\r\n this.showSidebar = show;\r\n if (!show) {\r\n this._channelService.closeDirectMessage();\r\n }\r\n }\r\n\r\n // sperate to avoid infinite loop\r\n closeSideBar() {\r\n // console.log(\"app component close sidebar\")\r\n this._channelService.sidebarChangeEvent(0);\r\n }\r\n\r\n handleScreenCheck() {\r\n this._channelService.screenChangeEvent();\r\n }\r\n\r\n unlockAudioContext(context: AudioContext) {\r\n // console.log(\"Context\", context);\r\n if (context.state !== 'suspended') {\r\n return;\r\n };\r\n const b = document.body;\r\n const events = ['touchend', 'mousedown', 'keydown'];\r\n events.forEach(e => b.addEventListener(e, unlock, false));\r\n function unlock() { context.resume().then(clean); }\r\n function clean() { events.forEach(e => b.removeEventListener(e, unlock)); }\r\n }\r\n}\r\n","\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\t\r\n\t\r\n\t\t\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t
\r\n
\r\n","// Main core modules \r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { AuthInterceptor } from './core/auth.interceptor';\r\n\r\n\r\n// Components \r\nimport { AppComponent } from './app.component';\r\nimport { NavigationOverlayComponent } from './navigation-overlay/navigation-overlay.component';\r\nimport { LoginComponent } from './login/login.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { SidebarOverlayComponent } from './sidebar-overlay/sidebar-overlay.component';\r\n\r\nimport { UnauthorizedComponent } from './home/unauthorized.component';\r\nimport { PageNotFoundComponent } from './home/pagenotfound.component'; // 🚧 needs to be implemented is 404 page not currently used ... \r\n\r\n\r\n// auth components (oidc) needs review ... \r\nimport { SigninRedirectCallbackComponent } from './home/signin-redirect-callback.component';\r\nimport { SignoutRedirectCallbackComponent } from './home/signout-redirect-callback.component';\r\n\r\n// ❌ App modules (unused) needs review & possible removal ... 🧹 \r\n// import { DocumentEditorAppModule } from './document-editor-app/document-editor-app.module';\r\n// import { DocumentSigningModule } from './document-signing/document-signing.module';\r\n// import { DocumentViewModule } from './document-view/document-view.module';\r\n// import { FormBuilderModule } from './form-builder/form-builder.module';\r\n// import { AppStoreAppModule } from './app-store-app/app-store-app.module';\r\n// import { AttorneyAppModule } from './attorney-app/attorney-app.module';\r\n// import { SaltLakeLegalAppModule } from './salt-lake-legal-app/salt-lake-legal-app.module';\r\n// import { LiveStreamAppModule } from './live-stream-app/live-stream-app.module';\r\n// import { VideoOnDemandAppModule } from './video-on-demand-app/video-on-demand-app.module';\r\n\r\n// import { SupportAppModule } from './support/support-app.module'; // ❔ ... not sure if working ... \r\n\r\n\r\n// App modules \r\nimport { ChannelAppModule } from './channel-app/channel-app.module';\r\nimport { MessageAppModule } from './message-app/message-app.module';\r\nimport { UserAppModule } from './user-app/user-app.module';\r\nimport { FaxAppModule } from './fax-app/fax-app.module';\r\nimport { FileStorageAppModule } from './file-storage-app/file-storage-app.module';\r\nimport { ToastNotificationModule } from './toast-notification/toast-notification.module';\r\nimport { VdjjVideoIntakeAppModule } from './vdjj-video-intake-app/vdjj-video-intake-app.module';\r\nimport { JitsiCallManagerComponent } from './jitsi-call-manager/jitsi-call-manager.component';\r\n\r\n\r\n// 💡 all pipes & mat- are exported from shared mod, shared mod is imported here \r\nimport { SharedModule } from './shared/shared.module';\r\n\r\n\r\n// new examples \r\nimport { ElementExamplesComponent } from './element-examples/element-examples.component';\r\n\r\n// 🎉 FOR CONFERENCE \r\nimport { LoginConferenceComponent } from './login-conference/login-conference.component';\r\nimport { ConferenceFullScheduleComponent } from './conference-full-schedule/conference-full-schedule.component';\r\n\r\n// 💡 new pwa module ...\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\n\r\n// new pages ... \r\nimport { EventsAppModule } from './events-app/events-app.module';\r\nimport { ContactsAppModule } from './contacts-app/contacts-app.module';\r\n\r\nimport { Platform } from '@angular/cdk/platform';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n LoginComponent,\r\n HomeComponent,\r\n SigninRedirectCallbackComponent,\r\n SignoutRedirectCallbackComponent,\r\n UnauthorizedComponent,\r\n PageNotFoundComponent,\r\n NavigationOverlayComponent,\r\n ElementExamplesComponent,\r\n LoginConferenceComponent,\r\n SidebarOverlayComponent,\r\n ConferenceFullScheduleComponent,\r\n JitsiCallManagerComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BrowserModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BrowserAnimationsModule,\r\n AppRoutingModule,\r\n SharedModule,\r\n ChannelAppModule,\r\n MessageAppModule,\r\n VdjjVideoIntakeAppModule,\r\n UserAppModule,\r\n FileStorageAppModule,\r\n FaxAppModule,\r\n ToastNotificationModule,\r\n EventsAppModule,\r\n ContactsAppModule,\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n constructor(private _platform: Platform) {\r\n // 💡 only register service worker if PWA ... \r\n // need to check if window in standalone here ... \r\n if(!this._platform.isBrowser) {\r\n // console.info(\"---- ::: >> not running in a browser ... regisering service worker ---- ::: >>\", this._platform)\r\n ServiceWorkerModule.register('./ngsw-worker.js', {\r\n // 💡 removed env here for testing ... [environment.production]\r\n enabled: true,\r\n // Register the ServiceWorker as soon as the app is stable\r\n // or after 30 seconds (whichever comes first).\r\n \r\n // registrationStrategy: 'registerWhenStable:30000' //\r\n registrationStrategy: 'registerImmediately'\r\n });\r\n } \r\n // else {\r\n // // console.info(\"---- ::: >> IS running in a browser ... NOT regisering service worker ---- ::: >>\", this._platform)\r\n // }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { ChannelHomepageComponent } from './channel-homepage/channel-homepage.component';\r\n\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot([\r\n { path: 'channels', component: ChannelHomepageComponent },\r\n { path: 'channel', component: ChannelHomepageComponent },\r\n\r\n // need to get a guests invited channel id to block other channel routes, altho if not invited will go to unauthorized anyways ...\r\n { path: 'channel/:channelId', component: ChannelHomepageComponent },\r\n ],\r\n { onSameUrlNavigation: 'reload', relativeLinkResolution: 'legacy' }\r\n )],\r\n exports: [RouterModule]\r\n})\r\nexport class ChannelAppRoutingModule { }\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxMaskModule} from 'ngx-mask';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport { ChannelAppRoutingModule } from './channel-app-routing.module';\r\nimport { ChannelHomepageComponent } from './channel-homepage/channel-homepage.component';\r\nimport { ChannelLivestreamComponent } from './channel-livestream/channel-livestream.component';\r\nimport { ChannelPrimaryComponent } from './channel-primary/channel-primary.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ChannelHomepageComponent,\r\n ChannelLivestreamComponent,\r\n ChannelPrimaryComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n NgxMaskModule.forRoot(),\r\n FormsModule,\r\n ChannelAppRoutingModule,\r\n ReactiveFormsModule,\r\n SharedModule,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ChannelAppModule { }\r\n","import { Component, Inject, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ApiCallsService } from \"../../services/api-calls.service\";\r\nimport { AppComponent } from \"src/app/app.component\";\r\nimport { ActivatedRoute, Params, Router } from \"@angular/router\";\r\nimport {\r\n fadeIn,\r\n listAnimationWrap,\r\n listAnimationItem,\r\n listAnimationWrapLong,\r\n listAnimationItemLong,\r\n listAnimationWrapAvatar,\r\n listAnimationItemAvatar,\r\n fadeInFast\r\n} from \"../../animations/global-animations\";\r\nimport { AuthService } from \"src/app/core/auth.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ChannelUser } from \"src/app/shared/interface/channel-user\";\r\nimport { consoleLogStyle } from '../../shared/varaibles';\r\nimport { Project } from \"src/app/shared/interface/project\";\r\nimport { GuestService } from \"src/app/services/guest.service\";\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { ChannelCard } from \"src/app/shared/interface/channel-card\";\r\nimport { MatAccordion } from \"@angular/material/expansion\";\r\nimport { ChannelFull } from \"src/app/shared/interface/channel-full\";\r\n\r\n\r\n\r\n@Component({\r\n selector: \"channel-homepage\",\r\n templateUrl: \"./channel-homepage.component.html\",\r\n styleUrls: [\"./channel-homepage.component.scss\"],\r\n animations: [\r\n listAnimationWrap,\r\n listAnimationItem,\r\n listAnimationItemLong,\r\n listAnimationWrapLong,\r\n listAnimationWrapAvatar,\r\n listAnimationItemAvatar,\r\n fadeIn,\r\n fadeInFast,\r\n ],\r\n})\r\n\r\nexport class ChannelHomepageComponent implements OnInit, OnDestroy {\r\n\r\n public userInfo: ChannelUser = this._authService._channelUserInfo;\r\n\r\n public channelId: string;\r\n public channelType: any;\r\n public channelInfo: ChannelFull;\r\n\r\n // public pageReload: boolean = false;\r\n public channelAuthPage: boolean = false; // true on 409 error from get channel ... \r\n public notInChannel: boolean = false;\r\n public pageReady: boolean = false;\r\n\r\n public permissions: any = {\r\n allowFiles: false,\r\n allowInviteGuest: false,\r\n allowUserManager: false,\r\n jitsiPreventList: []\r\n };\r\n\r\n // 🚧 new modals ... \r\n public displayChannelInfoModal: boolean = false;\r\n\r\n public displayScheduleModal: boolean = false;\r\n public displayScheduleWarning: boolean = false;\r\n public scheduleChannelMeetingObject: any = null;\r\n\r\n public displayCreateChannelModal: boolean = false;\r\n public displayCreateChannelWarning: boolean = false;\r\n\r\n public displayManageUsersModal: boolean = false; // new 12/15/2021 ... \r\n public selectedChannelId: string = null;\r\n\r\n // 🚧 new channels history ... \r\n public isDesktop: boolean = this._channelService._isDesktop;\r\n\r\n public channelSelectBy: string;\r\n\r\n public isLoadingProjects: boolean;\r\n public isLoadingChannelCards: boolean;\r\n\r\n public channelCards: Array = []; // new ... 🚧 is for history & favs ... \r\n public noChannelHistory: boolean;\r\n public noChannelFavorites: boolean;\r\n public isLoadingMoreChannels: boolean;\r\n public channelCardsPag: any = {};\r\n\r\n public projects: Array = [];\r\n\r\n public userHasSharedFoldersProject: boolean = false;\r\n\r\n @ViewChild(MatAccordion) accordion: MatAccordion;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n\r\n constructor(\r\n @Inject('rippleColor') public rippleColor: string,\r\n private _apiCalls: ApiCallsService,\r\n private _route: ActivatedRoute,\r\n private router: Router,\r\n private _toastService: ToastNotificationService,\r\n private _authService: AuthService,\r\n private _guestService: GuestService,\r\n private _channelService: ChannelService\r\n ) {\r\n this.subscriptions.push(\r\n this._authService.channelUserInfoChanged$.subscribe(() => {\r\n this.userInfo = this._authService._channelUserInfo;\r\n this.managePage();\r\n }));\r\n\r\n // \r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"closeScheduleModal\") {\r\n this.closeScheduleModal();\r\n }\r\n if (data.type === \"closeCreateChannelModal\") {\r\n this.closeCreateChannelModal();\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit() {\r\n if(this.userInfo) {\r\n this.managePage();\r\n }\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n managePage() {\r\n if (window.location.href.indexOf(\"?guest\") > -1) {\r\n let url = this.router.url.split(\"?guest=\");\r\n this.refreshUser(url);\r\n }\r\n this._route.params.subscribe((params: Params) => {\r\n // console.info(\"%c params??? \", consoleLogStyle, params)\r\n this.pageReady = false;\r\n if (params[\"channelId\"]) {\r\n this.channelId = params[\"channelId\"];\r\n }\r\n if (!this.channelId) {\r\n this.notInChannel = true;\r\n this.pageReady = true;\r\n } else if (this.channelId === \"quickmeeting\") {\r\n this.channelId = null;\r\n this.channelType = \"quick\";\r\n this.pageReady = true;\r\n } else {\r\n this.getChannel();\r\n }\r\n });\r\n this._route.queryParamMap.subscribe((params) => {\r\n // console.info(\"%c params??? \", consoleLogStyle, params.has('orderBy'), params.get('orderBy'))\r\n if (params.has('orderBy')) {\r\n this.channelSelectBy = params.get('orderBy');\r\n } else {\r\n this.channelSelectBy = 'history';\r\n }\r\n });\r\n if (this.userInfo.isGuest && this.channelId) {\r\n this._guestService.setInvitedChannelId(this.channelId);\r\n } else if (this.userInfo.isGuest && !this.channelId) {\r\n this._guestService.routeToChannelInvited();\r\n } else if (!this.userInfo.isGuest && !this.channelId) {\r\n switch (this.channelSelectBy) {\r\n case 'history': {\r\n this._getChannelHistoryForUser();\r\n break;\r\n }\r\n case 'favorites': {\r\n this._getChannelFavoritesForUser();\r\n break;\r\n }\r\n case 'projects': {\r\n this.getUsersProjects();\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // 💡 if in channel ... \r\n getChannel() {\r\n this._apiCalls.getChannel(this.channelId)\r\n .subscribe((data) => {\r\n // console.log(\"%c Get Channel from channel homepage\", consoleLogStyle, this.channelId);\r\n if (data.status === 200) {\r\n this.channelInfo = data.body;\r\n // console.log(\"Get Channel info from ch. Homepage\", this.channelInfo);\r\n this.channelType = data.body.type.toLowerCase();\r\n if (this.channelType === \"quick\") {\r\n this.permissions.allowFiles = true; // cote new for quick meeting now to allow files\r\n // this.permissions.allowInviteGuest = true;\r\n this.permissions.jitsiPreventList = ['files', 'record', 'users'];\r\n } else {\r\n this.permissions.allowFiles = true;\r\n // this.permissions.allowUserManager = true;\r\n }\r\n this.pageReady = true;\r\n } else if (data.status === 409) {\r\n this.channelAuthPage = true;\r\n // console.log(\"you do not have access to this channel\");\r\n } else {\r\n console.error(\"there was an error getting this channel\");\r\n // alert(JSON.stringify(data.status));\r\n }\r\n });\r\n }\r\n // \r\n\r\n // 💡 if channel/projects page ...\r\n getUsersProjects() {\r\n this.isLoadingProjects = true;\r\n //console.log(this.userInfo);\r\n this.projects = [];\r\n this._apiCalls.getProjectsForChannelsPage()\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"%c get Users projects/channels res? \", consoleLogStyle, res.body);\r\n // this.createProjectsObj(res.body);\r\n this.projects = res.body;\r\n this.projects.forEach((proj) => proj.channels = []); // \r\n this.isLoadingProjects = false;\r\n } else {\r\n console.error(\"error in get users projects/channels\", res)\r\n this.isLoadingProjects = false;\r\n }\r\n });\r\n }\r\n\r\n // get channels by proj id, push to Project.channels[] ... on dropdown open ...\r\n getChannelsForProject(projectId: string, projectIdx: number) {\r\n this.projects[projectIdx].isLoadingChannels = true;\r\n this._apiCalls.getChannelsByProject(this.userInfo.channelUserId, projectId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.projects[projectIdx].channels = data.body;\r\n this.projects[projectIdx].isLoadingChannels = false;\r\n // console.info(\"projects channels?\", this.projects[projectIdx].channels)\r\n } else {\r\n this.projects[projectIdx].isLoadingChannels = false;\r\n this._toastService.error(\"there was a problem getting this projects channels.\")\r\n }\r\n });\r\n }\r\n\r\n prevDefStopProp(e: Event) {\r\n // console.log('oi')\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n // favorite channel \r\n favoriteChannel(e: Event, channelHistoryId: string, projectIdx: number, channelIdx: number) {\r\n this.prevDefStopProp(e);\r\n if (!!channelHistoryId) {\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": true\r\n };\r\n this._apiCalls.patchChannelHistoryForChannelUser(channelHistoryId, patch)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"channel favorited\")\r\n this.projects[projectIdx].channels[channelIdx].isFavorite = true;\r\n } else {\r\n this._toastService.error(\"There was an error favoriting this channel.\");\r\n }\r\n });\r\n } else {\r\n this.createHistoryForFavorite(projectIdx, channelIdx);\r\n }\r\n }\r\n\r\n createHistoryForFavorite(projectIdx: number, channelIdx: number) {\r\n let historyObj = {\r\n \"chatUserId\": this.userInfo.channelUserId,\r\n \"chatRoomId\": this.projects[projectIdx].channels[channelIdx].channelId,\r\n \"isFavorite\": true\r\n };\r\n this._apiCalls.postChannelHistoryForChannelUser(historyObj)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"channel favorited\")\r\n this.projects[projectIdx].channels[channelIdx].isFavorite = true;\r\n } else {\r\n this._toastService.error(\"There was an error favoriting this channel.\");\r\n }\r\n });\r\n }\r\n\r\n unFavoriteChannel(e: Event, channelHistoryId: string, projectIdx: number, channelIdx: number) {\r\n this.prevDefStopProp(e);\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": false\r\n };\r\n this._apiCalls.patchChannelHistoryForChannelUser(channelHistoryId, patch)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"channel un-favorited\")\r\n this.projects[projectIdx].channels[channelIdx].isFavorite = false;\r\n } else {\r\n this._toastService.error(\"There was an error un-favoriting this channel.\")\r\n }\r\n });\r\n }\r\n\r\n // Channel options dropdown if by project ... \r\n showChannelOptionsDropdown(projIdx: number, chIdx: number, e?: Event) {\r\n const options = document.getElementById(`project-channel-options-dropdown-${projIdx}-${chIdx}`);\r\n options.classList.add('active');\r\n\r\n // also hide scrollbar ... \r\n let scrollBox = document.getElementById('projectScrollbox');\r\n scrollBox.classList.add('hidden');\r\n }\r\n\r\n hideChannelOptionsDropdown(projIdx: number, chIdx: number, e?: Event) {\r\n const options = document.getElementById(`project-channel-options-dropdown-${projIdx}-${chIdx}`);\r\n options.classList.remove('active');\r\n\r\n let scrollBox = document.getElementById('projectScrollbox');\r\n scrollBox.classList.remove('hidden');\r\n }\r\n\r\n // 🚧 Channel history options dropdown ... only 1 index to track ...\r\n showChannelHistoryOptionsDropdown(i: number, e?: Event) {\r\n const options = document.getElementById(`channel-options-dropdown-${i}`);\r\n options.classList.add('active');\r\n\r\n // also hide scrollbar ... \r\n let scrollBox = document.getElementById('channelScrollbox');\r\n scrollBox.classList.add('hidden');\r\n }\r\n\r\n hideChannelHistoryOptionsDropdown(i: number, e?: Event) {\r\n const options = document.getElementById(`channel-options-dropdown-${i}`);\r\n options.classList.remove('active');\r\n\r\n let scrollBox = document.getElementById('channelScrollbox');\r\n scrollBox.classList.remove('hidden');\r\n }\r\n\r\n // modal funcs ...\r\n // this will close each modal \r\n clickOffChannelModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n switch (value) {\r\n case 'channel-info-modal': {\r\n this.closeChannelInfoModal();\r\n break;\r\n }\r\n case 'manage-users-modal': {\r\n this.closeManageUsersModal();\r\n break;\r\n }\r\n case 'create-project-channel-modal': {\r\n if (this.displayCreateChannelWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeCreateChannelModal\");\r\n } else {\r\n this.closeCreateChannelModal();\r\n }\r\n break;\r\n }\r\n case 'schedule-modal': {\r\n if (this.displayScheduleWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeScheduleModal\");\r\n } else {\r\n this.closeScheduleModal();\r\n }\r\n break;\r\n }\r\n default: return;\r\n }\r\n }\r\n\r\n // create channel modal can create project too ...\r\n showCreateChannelModal() {\r\n this.displayCreateChannelModal = true;\r\n }\r\n closeCreateChannelModal() {\r\n this.displayCreateChannelModal = false;\r\n this.displayCreateChannelWarning = false;\r\n }\r\n closeCreateChannelModalConfirm() {\r\n // console.log(\"esc pressed\")\r\n if (this.displayCreateChannelWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeCreateChannelModal\");\r\n } else {\r\n this.closeCreateChannelModal();\r\n }\r\n }\r\n\r\n // channel info modal\r\n showChannelInfoModal(channelId: string) {\r\n this.selectedChannelId = channelId;\r\n this.displayChannelInfoModal = true;\r\n }\r\n closeChannelInfoModal() {\r\n this.displayChannelInfoModal = false;\r\n this.selectedChannelId = null;\r\n }\r\n\r\n // manage users modal ... \r\n showManageUsersModal(channelId: string) {\r\n this.selectedChannelId = channelId;\r\n this.displayManageUsersModal = true;\r\n }\r\n closeManageUsersModal() {\r\n this.displayManageUsersModal = false;\r\n this.selectedChannelId = null;\r\n }\r\n\r\n // schedule meeting Modal\r\n showScheduleModal(channelId: string, channelName: string) {\r\n let channelObj = {\r\n channelId,\r\n name: channelName\r\n };\r\n this.scheduleChannelMeetingObject = channelObj;\r\n this.displayScheduleModal = true;\r\n }\r\n closeScheduleModal() {\r\n this.displayScheduleWarning = false;\r\n this.displayScheduleModal = false;\r\n this.scheduleChannelMeetingObject = null;\r\n }\r\n closeScheduleModalConfirm() {\r\n if (this.displayScheduleWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeScheduleModal\");\r\n } else {\r\n this.closeScheduleModal();\r\n }\r\n }\r\n\r\n // this seems to be for Guest user ... \r\n refreshUser(url: any) {\r\n if (this._authService._user.profile.name !== url[1]) {\r\n this._authService.removeUserAuthentication().then(() => {\r\n window.location.reload();\r\n });\r\n }\r\n }\r\n\r\n // 🚧🚧🚧 NEW CHANNEL HISTORY INTERGRATION ... \r\n\r\n onWindowResize() {\r\n this.isDesktop = this._channelService._isDesktop;\r\n }\r\n\r\n selectChannelOrder(val: string) {\r\n // console.log(\"%c order changed\", consoleLogStyle, val)\r\n this.channelSelectBy = val;\r\n if (val === 'history') {\r\n this._getChannelHistoryForUser();\r\n }\r\n if (val === 'favorites') {\r\n this._getChannelFavoritesForUser();\r\n }\r\n if (val === 'projects') {\r\n this.getUsersProjects();\r\n }\r\n }\r\n\r\n _getChannelHistoryForUser() {\r\n this.isLoadingChannelCards = true;\r\n this.channelCards = [];\r\n this.noChannelHistory = false;\r\n this.noChannelFavorites = false;\r\n // console.log(\"%c api call with userinfo CHANNELS \", consoleLogStyle, this.userInfo);\r\n this._apiCalls.getChannelHistoryForChannelUserFullList(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // .concat(data.body).concat(data.body).concat(data.body) ... page test ... \r\n this.channelCards = data.body;\r\n this.channelCardsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // console.log(\"%c channel history CHANNELS \", consoleLogStyle, this.channelCards);\r\n // console.log(\"%c channel history CHANNELS pagination ? \", consoleLogStyle, this.channelCardsPag);\r\n this.isLoadingChannelCards = false;\r\n if (this.channelCards.length === 0) {\r\n this.noChannelHistory = true;\r\n }\r\n } else {\r\n // console.error(\"error getting channel history ...\", data)\r\n this.isLoadingChannelCards = false;\r\n this._toastService.error(\"There was an error getting channel history.\");\r\n }\r\n });\r\n }\r\n\r\n _getChannelFavoritesForUser() {\r\n this.isLoadingChannelCards = true;\r\n this.channelCards = [];\r\n this.noChannelFavorites = false;\r\n this.noChannelHistory = false;\r\n // console.log(\"%c api call with userinfo CHANNELS \", consoleLogStyle, this.userInfo);\r\n this._apiCalls.getChannelFavoritesForChannelUser(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.channelCards = data.body;\r\n this.channelCardsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // console.log(\"%c channel favorite CHANNELS \", consoleLogStyle, this.channelCards);\r\n // console.log(\"%c channel favorite CHANNELS pagination ? \", consoleLogStyle, this.channelCardsPag);\r\n this.isLoadingChannelCards = false;\r\n if (this.channelCards.length === 0) {\r\n this.noChannelFavorites = true;\r\n }\r\n } else {\r\n // console.error(\"error getting channel favs ...\", data)\r\n this.isLoadingChannelCards = false;\r\n this._toastService.error(\"There was an error getting channel favorites.\");\r\n }\r\n });\r\n }\r\n\r\n // 💡 infinite scrolling w/ Intersection Observer api ... [(@listAnimationItemLong.done)=\"last ? runPaginationObserver() : ''\"] \r\n // 🌐 https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API \r\n paginationObserver() {\r\n let lastEl = document.getElementById('LastChannel'); // grab last El in list [after animation done & is in DOM] \r\n // console.log(\"%c List anime done: run intersect observer 🎯 LAST El: \", consoleLogStyle, lastEl)\r\n if (!!lastEl) {\r\n let observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => { // can observe multiple El's but will always be an Array of [entries] \r\n // console.log(\"%c is 🎯 El intersecting? \", consoleLogStyle, entry.isIntersecting)\r\n // || entry.intersectionRatio > 0 - also works\r\n if (entry.isIntersecting && entry.intersectionRatio >= 0) { // bottom of view intersecting W/ the top of El \r\n // console.log('%c 🎯 El is IN view run get next page! ', consoleLogStyle);\r\n this._getMoreChannelHistory(this.channelCardsPag.nextPageLink);\r\n observer.unobserve(entry.target); // stop tracking this El, will grab next LastEl \r\n } else {\r\n // console.log('%c 🎯 El OUT of view. ',consoleLogStyle);\r\n }\r\n });\r\n });\r\n observer.observe(lastEl); // track the last El in list \r\n } else {\r\n // console.info(\"no last EL?\", lastEl);\r\n }\r\n }\r\n\r\n _getMoreChannelHistory(link: any) { // returns 8 results ... 2 page len avg. \r\n this.isLoadingMoreChannels = true;\r\n this._apiCalls.getGenericForPagination(link)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.channelCards = this.channelCards.concat(data.body);\r\n this.channelCardsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // console.log(\"%c MORE channel history CHANNELS\", consoleLogStyle, this.channelHistory);\r\n // console.log(\"%c channel history CHANNELS pagination ? \", consoleLogStyle, this.channelCardsPag);\r\n this.isLoadingMoreChannels = false;\r\n } else {\r\n console.error(\"error getting channel history ...\")\r\n this._toastService.error(\"There was an error getting channel history.\");\r\n this.isLoadingMoreChannels = false;\r\n }\r\n });\r\n }\r\n\r\n // favorites for history|fav view\r\n favoriteChannelHistoryView(e: Event, channelHistoryId: string, channelIdx: number) {\r\n this.prevDefStopProp(e);\r\n if (!!channelHistoryId) {\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": true\r\n };\r\n this._apiCalls.patchChannelHistoryForChannelUser(channelHistoryId, patch)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"channel favorited\")\r\n this.channelCards[channelIdx].isFavorite = true;\r\n } else {\r\n // console.log(\"%c channel favorited patch \", consoleLogStyle, channelHistoryId)\r\n this._toastService.error(\"There was an error favoriting this channel.\");\r\n }\r\n });\r\n } else {\r\n this.createHistoryForFavoriteHistoryView(channelIdx);\r\n }\r\n }\r\n\r\n createHistoryForFavoriteHistoryView(channelIdx: number) {\r\n let historyObj = {\r\n \"chatUserId\": this.userInfo.channelUserId,\r\n \"chatRoomId\": this.channelCards[channelIdx].channelId,\r\n \"isFavorite\": true\r\n };\r\n this._apiCalls.postChannelHistoryForChannelUser(historyObj)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"channel favorited\")\r\n this.channelCards[channelIdx].isFavorite = true;\r\n } else {\r\n // console.log(\"%c channel favorited create history \", consoleLogStyle, historyObj)\r\n this._toastService.error(\"There was an error favoriting this channel.\");\r\n }\r\n });\r\n }\r\n\r\n unFavoriteChannelHistoryView(e: Event, channelHistoryId: string, channelIdx: number) {\r\n this.prevDefStopProp(e);\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": false\r\n };\r\n this._apiCalls.patchChannelHistoryForChannelUser(channelHistoryId, patch)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"channel un-favorited\")\r\n this.channelCards[channelIdx].isFavorite = false;\r\n } else {\r\n this._toastService.error(\"There was an error un-favoriting this channel.\")\r\n }\r\n });\r\n }\r\n\r\n handleBrokenImage(projectIdx: number | null, channelIdx: number, userIdx: number) {\r\n // console.info('yeeeeeeee')\r\n if (this.channelSelectBy === 'projects') {\r\n this.projects[projectIdx].channels[channelIdx].allChannelUsers[userIdx].hash = '1';\r\n } else {\r\n this.channelCards[channelIdx].allChannelUsers[userIdx].hash = '1';\r\n }\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n Organization:\r\n
\r\n {{ !!userInfo ? userInfo.tenant : \" \" }}\r\n
\r\n\t\t\t\t
\r\n \r\n \r\n \r\n Channel History\r\n \r\n \r\n Favorite Channels\r\n \r\n \r\n All Channels\r\n \r\n \r\n \r\n
• by project\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n

You do not have any channels in history.

\r\n
\r\n
\r\n

You do not have any favorite channels.

\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {{project.name}}\r\n
\r\n \r\n
\r\n \r\n • No Channels\r\n \r\n \r\n • {{ project.channelCount }}\r\n Channel\r\n Channels\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Schedule meeting\r\n \r\n \r\n Manage users\r\n \r\n
\r\n \r\n \r\n Channel info\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n  \r\n \r\n \r\n  \r\n \r\n \r\n {{channel.teamProjectName}}\r\n
\r\n

{{channel.channelName}}

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n 1\r\n ? 's'\r\n : ''}}\"\r\n matTooltipClass=\"tooltip-default\">\r\n +{{channel.allChannelUsersRemainder}}\r\n \r\n \r\n \r\n \"user\"\r\n \r\n
\r\n {{user.userName|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ChannelHomepageComponent } from '../channel-homepage/channel-homepage.component';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { SocketsService } from 'src/app/services/sockets.service';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { Router } from '@angular/router';\r\nimport { FileStorageService } from 'src/app/services/file-storage.service';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { Constants } from '../../constants';\r\nimport { MeetingService } from 'src/app/services/meeting.service';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\n\r\n// ✨✨✨❌❌❌ component not currently in use (see shared/components/live-stream-video for new implementation) ... \r\n\r\n@Component({\r\n selector: 'app-channel-livestream',\r\n templateUrl: './channel-livestream.component.html',\r\n styleUrls: ['./channel-livestream.component.scss']\r\n})\r\nexport class ChannelLivestreamComponent implements OnInit, OnDestroy {\r\n public isProd = Constants.isProd;\r\n\r\n public userInfo: ChannelUser = this._channelsHome.userInfo;\r\n public channelInfo: any = this._channelsHome.channelInfo;\r\n public meetingInfo: any = null;\r\n public channelId: string;\r\n public projectId: string;\r\n\r\n public ownersList: any = [];\r\n\r\n public searchId: any = \"\";\r\n public newChannel: any = {};\r\n\r\n public chatList: any = [];\r\n public socketServers: any = [];\r\n\r\n public isOwner: boolean = false;\r\n public isMember: boolean = false;\r\n\r\n public liveStreamNotFound: boolean = false;\r\n public noAccess: boolean = false;\r\n public denyAccess: boolean = false;\r\n public isFind: boolean = false; // If no channel Info is provided\r\n public showPage: boolean = false; // Set when channel is ready\r\n public showVid: boolean = true;\r\n public showChat: boolean = true;\r\n public showSettings: boolean = false;\r\n public showAttendance: boolean = false;\r\n public hasAccess: boolean = false;\r\n\r\n //temp for files\r\n public _showFiles: boolean = false\r\n public channelDisplayName: string = \"\";\r\n public downloadFile: any = {};\r\n public sharedFileListQuery: any = {};\r\n public fileList: any = [];\r\n\r\n public createAllow: any = false;\r\n\r\n constructor(\r\n private _channelsHome: ChannelHomepageComponent,\r\n private _fileStorageService: FileStorageService,\r\n private _chManageService: ProjectChannelService,\r\n private _channelService: ChannelService,\r\n private _meetingService: MeetingService,\r\n private _socketService: SocketsService,\r\n private _apiCalls: ApiCallsService,\r\n private _authService: AuthService,\r\n private router: Router\r\n ) {\r\n if (this.channelInfo) {\r\n this.channelId = this.channelInfo.channelId;\r\n this.channelInitialize();\r\n }\r\n\r\n this._channelService.onUpdateUserStatusEvent$.subscribe((channelUserStatusList: any) => {\r\n // alert('status changed')\r\n //alert(JSON.stringify(this.chatList));\r\n // this._getChannelUsersInRoom()\r\n this.chatList.forEach(user => {\r\n channelUserStatusList.forEach(channelUser => {\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n user.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n user.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n user.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n user.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n // messUser.userStatus = \"hidden\";\r\n user.userStatus = \"offline\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n user.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n user.userStatus = \"brb\";\r\n }\r\n });\r\n });\r\n });\r\n\r\n this._channelService.onJoinNotification$.subscribe(() => {\r\n // alert('someone joined')\r\n this._getChannelUsersInRoom();\r\n });\r\n\r\n this._channelService.onUserLeaveEvent$.subscribe((userObj: any) => {\r\n // alert('someone left')\r\n this._getChannelUsersInRoom();\r\n });\r\n\r\n this._channelService.onGetChannelUsersInRoomEvent$.subscribe((userObj: any) => {\r\n // alert('someone left')\r\n this._getChannelUsersInRoom();\r\n });\r\n\r\n this._channelService.onJoinEvent$.subscribe(() => {\r\n this.hasAccess = true;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.channelInfo) {\r\n this.isFind = true;\r\n // this._getProject();\r\n this.checkProd();\r\n this.showPage = true;\r\n } else {\r\n this.channelId = this.channelInfo.channelId;\r\n this.channelPermissionsCheck(true);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n return this._channelService.leave(this.channelId);\r\n }\r\n\r\n checkProd() {\r\n // alert(Constants.isProd);\r\n // this.createAllow = true;\r\n if (Constants.isProd) {\r\n let list = [\r\n \"2cf2e305-bdb8-4713-9f8f-18af1c7ac62b\",\r\n \"2637ebb1-ffb5-4144-b41b-d65e098188f3\",\r\n \"4753aca7-4390-4046-a8db-ca4511766af1\",\r\n \"10a19a28-c1ff-489d-9a25-7e7894f09a8f\"\r\n ];\r\n if (list.some(id => id === this._authService._user.profile.sub.toLowerCase())) {\r\n this.createAllow = true;\r\n } else {\r\n this.createAllow = false;\r\n }\r\n } else {\r\n this.createAllow = true;\r\n }\r\n }\r\n\r\n ownerMemberCheck() {\r\n let owners = [];\r\n let members = [];\r\n\r\n if (this.channelInfo.private) {\r\n this.channelInfo.chatRoomChatUsers.forEach(user => {\r\n owners.push(user.chatUserKeyNavigation);\r\n if (user.chatUserKeyNavigation.channelUserId === this._authService._user.profile.sub) {\r\n this.isOwner = true;\r\n // alert(\"Owner\");\r\n }\r\n });\r\n this.channelInfo.chatRoomChatUser1.forEach(user => {\r\n members.push(user.chatUserKeyNavigation);\r\n if (user.chatUserKeyNavigation.channelUserId === this._authService._user.profile.sub) {\r\n this.isMember = true;\r\n // alert(\"Member\");\r\n }\r\n });\r\n if (this.isOwner || this.isMember) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n channelPermissionsCheck(init) {\r\n // if (this.ownerMemberCheck()) {\r\n if (true) {\r\n if (init) {\r\n this.ownerCheck();\r\n this._getMeeting();\r\n this.showPage = true;\r\n } else {\r\n this._getMeeting();\r\n this.isFind = false;\r\n this.liveStreamNotFound = false;\r\n this.denyAccess = false;\r\n this.router.navigate(['/channel', this.channelId]);\r\n }\r\n this.channelInitialize();\r\n this._sharedFileList();\r\n \r\n } else { // unreachable code ??? ... \r\n if (init) { \r\n this.noAccess = true;\r\n this.showPage = true;\r\n } else {\r\n this.denyAccess = true;\r\n // this.liveStreamNotFound = true;\r\n }\r\n }\r\n }\r\n\r\n channelInitialize() {\r\n return this._channelService.join(this.channelId);\r\n }\r\n\r\n _getActiveSocketServers(): Promise {\r\n return this._socketService.getActiveSocketServers()\r\n .toPromise()\r\n .then(data => {\r\n console.log(\"Getactivesocketservers quick meeting\" + JSON.stringify(data.body));\r\n this.socketServers = data.body;\r\n })\r\n .catch(err => console.log(err));\r\n }\r\n\r\n\r\n\r\n // ❌ there is no error catching in this api sub ... \r\n // ...\r\n _getChannelUsersInRoom() {\r\n this._chManageService.getChannelUsersInRoomByChannelId(this.channelId)\r\n .subscribe(data => { \r\n //alert(this.channelId);\r\n let chatList = data.body;\r\n let _userId = this.userInfo.channelUserId;\r\n chatList.sort(function (x, y) { return x.channelUserId == _userId ? -1 : y.channelUserId == _userId ? 1 : 0; });\r\n chatList.forEach(user => {\r\n if (user.chatUserKeyNavigation.PresenceStatus === 0) {\r\n user.userStatus = \"online\";\r\n } else if (user.chatUserKeyNavigation.PresenceStatus === 1) {\r\n user.userStatus = \"away\";\r\n } else if (user.chatUserKeyNavigation.PresenceStatus === 2) {\r\n user.userStatus = \"offline\";\r\n } else if (user.chatUserKeyNavigation.PresenceStatus === 3) {\r\n user.userStatus = \"busy\";\r\n } else if (user.chatUserKeyNavigation.PresenceStatus === 4) {\r\n user.userStatus = \"in-call\";\r\n }\r\n });\r\n this.chatList = [];\r\n this.chatList = chatList;\r\n });\r\n }\r\n\r\n _getChannel(channelId: string) {\r\n this._apiCalls.getChannel(channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n if (data.body.type.toLowerCase() === 'live') {\r\n this.channelInfo = data.body;\r\n this.channelId = this.channelInfo.channelId;\r\n // this.ownerCheck();\r\n this.channelPermissionsCheck(false);\r\n } else {\r\n this.liveStreamNotFound = true;\r\n }\r\n } else {\r\n this.liveStreamNotFound = true;\r\n console.log(data.status);\r\n // alert(JSON.stringify(data.status));\r\n }\r\n });\r\n }\r\n\r\n _getChannelJustInfo() {\r\n this._apiCalls.getChannel(this.channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.channelInfo = data.body;\r\n // this.ownerCheck();\r\n this._getMeeting();\r\n } else {\r\n console.log(data.status);\r\n // alert(JSON.stringify(data.status));\r\n }\r\n });\r\n }\r\n\r\n _getMeeting() {\r\n this._meetingService.getMeetingsByChannel(this.channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n if (data.body.length > 0) {\r\n this.meetingInfo = data.body[0];\r\n this.meetingPreferences();\r\n } else {\r\n console.log(\"no meeting found\");\r\n }\r\n } else {\r\n alert(JSON.stringify(data));\r\n }\r\n });\r\n }\r\n\r\n ownerCheck() {\r\n this.channelInfo.chatRoomChatUsers.forEach(user => {\r\n this.ownersList.push(user.chatUserKeyNavigation)\r\n });\r\n console.log(this.ownersList);\r\n if (this.ownersList.some(listUser => this._authService._user.profile.sub === listUser.channelUserId)) {\r\n this.isOwner = true;\r\n }\r\n }\r\n\r\n meetingPreferences() {\r\n if (this.meetingInfo.DisplayAttendance) {\r\n this.showAttendance = true;\r\n } else {\r\n if (this.isOwner) {\r\n this.showAttendance = true;\r\n }\r\n }\r\n }\r\n\r\n onMeetingUpdate() {\r\n this._getChannelJustInfo();\r\n this.showSettings = false;\r\n }\r\n\r\n // _getProject() {\r\n // this._apiCalls.getProjectByName('LiveStreamingApp')\r\n // .subscribe(data => {\r\n // if (data.status === 200) {\r\n // // alert(JSON.stringify(data));\r\n // this.projectId = data.body[0].teamProjectId;\r\n // this.newChannelInit();\r\n // } else {\r\n // alert(JSON.stringify(data));\r\n // }\r\n // });\r\n // }\r\n\r\n //temp files\r\n filesInit() {\r\n this.downloadFile = {\r\n \"roomOwnerUserId\": \"\",\r\n \"channelId\": \"\",\r\n \"path\": \"\",\r\n \"rev\": \"\"\r\n };\r\n }\r\n\r\n _downloadSharedFile(filePath: string, fileName: string) {\r\n this.downloadFile.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n this.downloadFile.path = filePath;\r\n this.downloadFile.channelId = this.channelInfo.channelId;\r\n // alert(JSON.stringify(this.downloadFile));\r\n this._fileStorageService.fileStorageDownloadSharedFile(this.downloadFile)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n console.log(data);\r\n // window.open(data.body, '_blank') //open\r\n this.createDownloadElement(data.body, fileName);\r\n this.filesInit();\r\n } else {\r\n alert(JSON.stringify(data));\r\n }\r\n });\r\n }\r\n\r\n createDownloadElement(link, name) {\r\n // alert(link);\r\n var element = document.createElement('a');\r\n element.setAttribute('href', link);\r\n element.setAttribute('download', link);\r\n element.setAttribute('target', '_blank');\r\n\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n\r\n element.click();\r\n\r\n document.body.removeChild(element);\r\n }\r\n\r\n _sharedFileList() {\r\n this.sharedFileListQuery.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n this.sharedFileListQuery.projectName = \"LiveStreamingApp\";\r\n this.sharedFileListQuery.roomName = this.channelInfo.name;\r\n this._fileStorageService.listSharedFiles(this.sharedFileListQuery)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.fileList = data.body.entries;\r\n // alert(JSON.stringify(data));\r\n } else {\r\n alert(JSON.stringify(data));\r\n }\r\n });\r\n }\r\n\r\n _softDeleteFile(filePath: string) {\r\n this._fileStorageService.softDeleteFile(filePath, this.channelInfo.channelId)\r\n .subscribe(res => {\r\n // alert(JSON.stringify(res));\r\n this._sharedFileList()\r\n });\r\n }\r\n\r\n _deleteFile(filePath: string) {\r\n console.log(filePath);\r\n this._fileStorageService.deleteFile(filePath, this.channelInfo.channelId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // alert(JSON.stringify(res));\r\n console.log(res);\r\n //this._channelService.sharedFileDeleteComplete(this.channelId);\r\n } else {\r\n alert(JSON.stringify(res));\r\n }\r\n });\r\n }\r\n\r\n displayChat() {\r\n this.showChat = (this.showChat) ? false : true;\r\n }\r\n\r\n displaySettings() {\r\n this.showSettings = (this.showSettings) ? false : true;\r\n }\r\n\r\n showModal() {\r\n this._showFiles = (this._showFiles) ? false : true;\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n

Live Stream

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Stream could not be found

\r\n

You do not have access to this meeting

\r\n
\r\n
\r\n \r\n

Create New Live Stream

\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n

{{channelInfo.name}}

\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n

Users in Channel

\r\n
\r\n
\r\n \r\n
\r\n \"profile\r\n
\r\n

\r\n {{user.chatUserKeyNavigation.displayName}}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n

You dont have access to this Live Stream

\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, OnDestroy } from \"@angular/core\";\r\nimport { Validators, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { ChannelHomepageComponent } from \"../channel-homepage/channel-homepage.component\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ChannelService } from \"src/app/services/channel-service\";\r\nimport { AuthService } from \"src/app/core/auth.service\";\r\nimport { ToastNotificationService } from '../../services/toast-notification.service';\r\nimport { MeetingService } from 'src/app/services/meeting.service';\r\nimport { consoleLogStyle } from '../../shared/varaibles';\r\nimport { ChannelUser } from \"src/app/shared/interface/channel-user\";\r\nimport { ChannelFull } from \"src/app/shared/interface/channel-full\";\r\nimport { ScreenCheck } from \"src/app/shared/functions\";\r\nimport { Constants } from \"src/app/constants\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'channel-primary',\r\n templateUrl: './channel-primary.component.html',\r\n styleUrls: ['./channel-primary.component.scss'],\r\n})\r\n\r\nexport class ChannelPrimaryComponent implements OnInit, OnDestroy {\r\n // ❌ unused ... \r\n // public creatorId: string; // channel creator id \r\n // public socketServers: any = []; //\r\n // public phoneModeBreak: number = 640; //tablet-small\r\n // public showSettings: boolean = false;\r\n // ❌💡 these should be handled in the role.toLowerCase() === 'viewer');\r\n // makes files default tab if viewer\r\n if (this.isViewer) {\r\n this.toggleFiles();\r\n }\r\n this.userInfo = this._channelsHome.userInfo;\r\n this.allowFiles = this._channelsHome.permissions.allowFiles;\r\n // this.allowInviteGuest = this._channelsHome.permissions.allowInviteGuest;\r\n // this.allowUserManager = this._channelsHome.permissions.allowUserManager;\r\n this.jitsiPreventList = this._channelsHome.permissions.jitsiPreventList;\r\n // this.channelInitialize();\r\n // new \r\n this.userId = this._authService._userInfo.sub\r\n this.isGuest = this._channelsHome.userInfo.isGuest;\r\n this.isQuickMeeting = this.channelInfo.type === 'quick';\r\n this.isDirectMessage = this.channelInfo.type === 'direct';\r\n // console.log(\"this user id? :::\", this.userId)\r\n // console.log(\"is guest in primary channel ? :::\", this.isGuest)\r\n // console.log(\"this.isQuickmeeting:\", this.isQuickMeeting)\r\n \r\n // 🚧🚧🚧 new meeting hasnt started/ meeting has ended start ... \r\n \r\n // if guest can enter meeting 15min early (modal closes at that time) cannot close modal early ...\r\n // if user show hasnt started modal but can close it ...\r\n \r\n if (this.isQuickMeeting) {\r\n this._meetingService.getQuickMeetingByChannelId(this.channelId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n let meeting = res.body[0];\r\n // console.info(\"%c MEETING JOINED??\", consoleLogStyle, meeting)\r\n let meetingCreatorId = meeting.chatUserId;\r\n this.meetingTitle = meeting.title;\r\n this.meetingId = meeting.meetingId;\r\n this.meetingStart = meeting.start + 'Z';\r\n this.meetingEnd = meeting.end + 'Z';\r\n if (this.userId === meetingCreatorId) {\r\n this.isMeetingCreator = true;\r\n }\r\n \r\n let startDateNow = new Date();\r\n startDateNow.setMinutes(startDateNow.getMinutes() + 15);\r\n let startDateNowRes = startDateNow.toISOString();\r\n \r\n let endDateNow = new Date().toISOString();\r\n \r\n \r\n // console.log(\"%c quick meeting ::: \", consoleLogStyle, meeting, startDateNowRes )\r\n // console.log(\"%c quick meeting not started ??? \", consoleLogStyle, this.meetingStart > startDateNowRes )\r\n // console.log(\"%c quick meeting ended ??? \", consoleLogStyle, this.meetingEnd < endDateNow )\r\n \r\n if(meeting.isCanceled) {\r\n this.meetingCanceled = true;\r\n this.meetingEnded = true;\r\n }\r\n else if (Date.parse(this.meetingStart) > Date.parse(startDateNowRes) && !this.isMeetingCreator) {\r\n // console.info(\"meeting hasnt started yet...................\")\r\n this.meetingNotStarted = true;\r\n if(this.isGuest) {\r\n this.meetingNotStartedTimer();\r\n }\r\n }\r\n else if (Date.parse(this.meetingEnd) < Date.parse(endDateNow) && !this.isMeetingCreator) {\r\n // console.info(\"meeting has ended...................\")\r\n this.meetingEnded = true;\r\n } else {\r\n this.getMeetingAttendees();\r\n // console.log(\"meeting id chan pri >\", this.meetingId)\r\n if(this.isGuest) {\r\n this.createGuestNameForm(); // guest name form init ... \r\n } else {\r\n this.displayGuestModal = false;\r\n }\r\n if (this.isMeetingCreator) {\r\n // console.log(\"is creator, show invite?\", (this.isMeetingCreator));\r\n this.toggleUsers();\r\n }\r\n }\r\n } else {\r\n console.error(\"get meetings error?\", res.status);\r\n }\r\n });\r\n }\r\n } else {\r\n console.log(\"No channel info in constructor of primary channel. this is bad.\", this.channelInfo);\r\n }\r\n\r\n this.subscriptions.push(this._channelService.onJoinEvent$.subscribe(() => {\r\n this.hasAccess = true;\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJoinNotification$.subscribe((joinObj: any) => {\r\n if (joinObj.showJoinNotification == true) {\r\n if (this.channelId.toLowerCase() === joinObj.channelId.toLowerCase()) {\r\n this._toastService.enter(joinObj.displayname);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUserLeaveEvent$.subscribe((userObj: any) => {\r\n if (userObj.showLeaveNotification == true) {\r\n this._toastService.leave(userObj.displayname);\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUpdateMeetingListEvent$.subscribe(() => {\r\n this.getMeetingAttendees();\r\n }));\r\n\r\n this.subscriptions.push(this._authService.userChange$.subscribe(() => {\r\n this.username = this._authService._userInfo.preferred_username;\r\n this.isViewer = this._authService._userInfo?.role.some(role => role.toLowerCase() === 'viewer');\r\n this.userId = this._authService._userInfo.sub\r\n }));\r\n }\r\n\r\n ngOnInit() {\r\n this.desktopCheck();\r\n this.ownerCheck();\r\n if (!this.isChannelBreak) {\r\n this.toggleMobileVideo();\r\n }\r\n // this.isSafariOrOtherBrowser = /msie\\s|trident\\/|safari\\//i.test(window.navigator.userAgent);\r\n if (!this.channelInfo) {\r\n // console.info(\"%c no channel info on init channel primary ?\", this.channelInfo)\r\n // this.displayScheduleMeetForm = true;\r\n } else {\r\n // console.log(\"Channel info? :::\", this.channelInfo)\r\n // this.channelPermissionsCheck(true); fix\r\n if (!this.isViewer && !this.isGuest) this.channelInitialize();\r\n // if (this.isQuickMeeting && this.isGuest && this.userInfo.displayName === \"Guest User\" && !this.meetingEnded && !this.meetingNotStarted) {\r\n // this.createGuestNameForm(); // guest name form init ... \r\n // } else {\r\n // this.displayGuestModal = false;\r\n // }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n return this._channelService.leave(this.channelId);\r\n }\r\n\r\n channelInitialize() {\r\n return this._channelService.join(this.channelId);\r\n }\r\n\r\n // ❔ just for logging ??? \r\n getParticipantsInCall(participants:any):void { \r\n // console.info(\"%c participents in call? \", consoleLogStyle, participants) \r\n }\r\n\r\n videoStarted() {\r\n this.inVideo = true;\r\n // if (!this.isChannelBreak) {\r\n // // this.hideSide();\r\n // }\r\n }\r\n\r\n videoEnded() {\r\n this.inVideo = false;\r\n if (this.showMobileEvents && this.isChannelBreak) {\r\n this.toggleChat();\r\n }\r\n this.displaySide();\r\n }\r\n\r\n showVideo() {\r\n this.showVid = true;\r\n }\r\n\r\n hideVideo() {\r\n this.showVid = false;\r\n }\r\n\r\n toggleSide() {\r\n this.showSide = this.showSide ? false : true;\r\n }\r\n\r\n hideSide() {\r\n this.showSide = false;\r\n }\r\n\r\n displaySide() {\r\n this.showSide = true;\r\n }\r\n\r\n toggleChat() {\r\n this.showUsers = false;\r\n this.showFiles = false\r\n this.showMobileVideo = false;\r\n this.showMobileEvents = false;\r\n this.showChat = true;\r\n this.setActiveTab(1);\r\n }\r\n\r\n toggleUsers() {\r\n this.showChat = false;\r\n this.showFiles = false;\r\n this.showMobileVideo = false;\r\n this.showMobileEvents = false;\r\n this.showUsers = true;\r\n this.setActiveTab(2);\r\n }\r\n\r\n toggleFiles() {\r\n this.showUsers = false;\r\n this.showChat = false;\r\n this.showMobileVideo = false;\r\n this.showMobileEvents = false;\r\n this.showFiles = true;\r\n this.setActiveTab(3);\r\n }\r\n\r\n toggleMobileVideo() {\r\n this.showUsers = false;\r\n this.showChat = false;\r\n this.showFiles = false;\r\n this.showMobileEvents = false;\r\n this.showMobileVideo = true;\r\n this.setActiveTab(4);\r\n }\r\n\r\n toggleMobileEvents() {\r\n this.showUsers = false;\r\n this.showChat = false;\r\n this.showFiles = false;\r\n this.showMobileVideo = false;\r\n this.showMobileEvents = true;\r\n this.setActiveTab(5);\r\n }\r\n\r\n setActiveTab(tabNumberToSet: number) {\r\n this.activeTab = tabNumberToSet;\r\n // console.log(\"active tab set\", tabNumberToSet)\r\n }\r\n\r\n onChannelUpdate() {\r\n this._getChannel();\r\n // this.showSettings = false;\r\n }\r\n\r\n _getChannel() {\r\n this._apiCalls.getChannel(this.channelId)\r\n .subscribe((data) => {\r\n if (data.status === 200) {\r\n this.channelInfo = data.body;\r\n // this.showPage = true;\r\n // this.ownerCheck();\r\n console.log(\"Guest: \" + this.userInfo.isGuest);\r\n } else {\r\n console.error(data.status);\r\n }\r\n });\r\n }\r\n\r\n // 💡 for file storage permissions ... \r\n ownerCheck() {\r\n this.channelInfo.chatRoomChatUsers.forEach((user) => {\r\n this.ownersList.push(user.chatUserKeyNavigation);\r\n });\r\n // console.log(this.ownersList);\r\n if (\r\n this.ownersList.some(\r\n (listUser) =>\r\n this._authService._userInfo.sub ===\r\n listUser.channelUserId\r\n )\r\n ) {\r\n this.isOwner = true;\r\n }\r\n }\r\n\r\n getMeetingAttendees() {\r\n // console.log(\"%c get meeting attendees params? \", consoleLogStyle, this.meetingId, this.userInfo.channelUserId)\r\n this._meetingService.getMeetingAttendeesToEditByMeetingId(this.meetingId, this.userInfo.channelUserId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.meetingAttendees = res.body.meetingAttendees; // only attendees, to get creator just res.body is needed...\r\n // console.log(\"%c meeting attendees channel? \", consoleLogStyle, this.meetingAttendees)\r\n } else {\r\n console.error(\"error getting meeting attendees?\", res)\r\n }\r\n });\r\n }\r\n\r\n // if guest enters ... \r\n createGuestNameForm() {\r\n this.newGuestName = this.formBuilder.group({\r\n displayName: ['', [Validators.required, Validators.minLength(2), Validators.pattern(/^[a-zA-Z'.-\\s]*$/)]]\r\n });\r\n this.displayGuestModal = true;\r\n setTimeout(() => {\r\n let inel:HTMLElement = document.getElementById('guest-name-input');\r\n if (inel) inel.focus();\r\n });\r\n }\r\n\r\n get gn() { return this.newGuestName.controls; }\r\n\r\n setGuestUserNameAndEnterMeeting(displayName: string) {\r\n this.isSettingGuestName = true;\r\n this.changeDisplayName.value = displayName;\r\n this._apiCalls.patchChannelUser(this._authService._userInfo.sub, this.changeDisplayName)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"new guest display name set :::\", this.changeDisplayName)\r\n this.isSettingGuestName = false;\r\n this._toastService.success(`Display name set. Hello, ${displayName}!`);\r\n this._authService.displayNameBehaviorSubject.next(displayName);\r\n this.displayGuestModal = false;\r\n this.guestDisplayNameUpdated();\r\n this.channelInitialize();\r\n } else {\r\n // console.log(\"error in setting guest name?\", res)\r\n this.isSettingGuestName = false;\r\n this._toastService.error(\"Invalid display name.\");\r\n this.displayGuestModal = true;\r\n setTimeout(() => {\r\n let inel = document.getElementById('guest-name-input');\r\n if (inel) inel.focus();\r\n }); // a settimeout with no time ensures this will run after modal is displayed ...\r\n }\r\n });\r\n }\r\n\r\n goToHomepage() {\r\n this.router.navigate(['']);\r\n }\r\n\r\n guestDisplayNameUpdated() {\r\n this._channelService.guestDisplayNameUpdated(this.channelId);\r\n }\r\n\r\n desktopCheck() {\r\n //560 is phablet\r\n this.isDesktop = ScreenCheck(560);\r\n this.isChannelBreak = ScreenCheck(900); //match $channel-break\r\n if (this.showMobileVideo && this.isChannelBreak) {\r\n this.toggleChat();\r\n } else if (this.showMobileEvents && this.isChannelBreak && !this.inVideo) {\r\n this.toggleChat();\r\n }\r\n }\r\n\r\n meetingNotStartedTimer() {\r\n // console.log(\"%c start the count down!\", consoleLogStyle, this.meetingStart, this.meetingEnd)\r\n\r\n // this is for the 'timeAgo' pipe (15 min before meeting countdown pipe) ... \r\n let startMeetMod = new Date(this.meetingStart);\r\n startMeetMod.setMinutes(startMeetMod.getMinutes() - 15); // countdown ends 15min before meeting start ... \r\n this.meetingStartForPipe = startMeetMod;\r\n\r\n // this is for the setTimeout() that will close this modal 15min before meeting start ... \r\n let startDateNow = new Date();\r\n startDateNow.setMinutes(startDateNow.getMinutes() + 15);\r\n let startDateNowRes = startDateNow.toISOString();\r\n this.timeRemaining = Date.parse(this.meetingStart) - Date.parse(startDateNowRes);\r\n\r\n // console.info(\"%c time remaining num|string\", consoleLogStyle, this.timeRemaining, this.meetingStartForPipe)\r\n // open set name modal 15min before meeting starts - \r\n setTimeout(() => {\r\n this._toastService.success(\"🎉 You can now enter the meeting.\");\r\n this.meetingNotStarted = false;\r\n this.createGuestNameForm(); // guest name form init ... \r\n }, this.timeRemaining);\r\n }\r\n\r\n closeMeetingEnded() {\r\n this.meetingEnded = false;\r\n this.getMeetingAttendees();\r\n }\r\n\r\n closeMeetingNotStarted() {\r\n this.meetingNotStarted = false;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n // ❌ ... remove after testing ... \r\n // new quick meeting \r\n // channelPermissionsCheck(init: boolean) {\r\n // if (init) {\r\n // // ❌💡 these should be handled in the {\r\n // // console.log(\"get channel data :::\", data)\r\n // if (data.status === 200) {\r\n // if (data.body.type.toLowerCase() === 'quick') {\r\n // this.channelInfo = data.body;\r\n // this.channelId = this.channelInfo.channelId;\r\n // this.channelPermissionsCheck(false);\r\n // } else {\r\n // this.meetingNotFound = true;\r\n // console.log(\"meeting not found? :::\", data.status)\r\n // }\r\n // } else {\r\n // this.meetingNotFound = true;\r\n // console.error(\"meeting not found? :::\", data.status);\r\n // }\r\n // });\r\n // }\r\n\r\n // ❌💡 these should be handled in the 0) {\r\n // this._addMeetingAttendeesEmail();\r\n // }\r\n // }\r\n\r\n // _addMeetingAttendeesEmail() {\r\n // this.isSendingEmailInvite = true;\r\n // this.listEmail.forEach((email: string) => {\r\n // let attendee = {\r\n // \"email\": email,\r\n // \"meetingId\": this.meetingId\r\n // };\r\n // this._meetingService.postGuestMeetingAttendee(attendee)\r\n // .subscribe(res => {\r\n // if (res.status === 201) {\r\n // console.log(\"Attendee Added EMAIL :::\", res.body);\r\n // let invite = {\r\n // \"inviteEmail\": email,\r\n // \"meetingId\": this.meetingId\r\n // }\r\n // this._meetingService.sendInviteToken(invite)\r\n // .subscribe(res => {\r\n // if (res.status === 200) {\r\n // console.log(\"Token sent EMAIL ::\", res)\r\n // this.isSendingEmailInvite = false;\r\n // this.closeInviteModal();\r\n // this.getMeetingAttendees();\r\n // this._toastService.success(`Email invite was sent to ${email}.`);\r\n // this.listEmail = [];\r\n // } else {\r\n // console.log(\"error :::\", JSON.stringify(res));\r\n // this.isSendingEmailInvite = false;\r\n // this._toastService.error(`There was an error sending your email to ${email}.`);\r\n // this.listEmail = [];\r\n // }\r\n // })\r\n // } else {\r\n // console.log(\"error :::\", JSON.stringify(res));\r\n // this.isSendingEmailInvite = false;\r\n // this._toastService.error(`There was an error sending your email to ${email}.`);\r\n // this.listEmail = [];\r\n // }\r\n // });\r\n // });\r\n // }\r\n\r\n // SMS INVITE FORM // \r\n // addSMSToList() {\r\n // if (!this.listSMS.includes(this.listItemSMS)) {\r\n // this.listSMS.push(this.listItemSMS);\r\n // this.listItemSMS = '';\r\n // } else {\r\n // this.listItemSMS = '';\r\n // }\r\n // }\r\n\r\n // removeSMSFromList(i: number) {\r\n // this.listSMS.splice(i, 1);\r\n // }\r\n\r\n // sends it !!!\r\n // inviteGuestBySMS() {\r\n // console.log(\"sending SMS invite ::\", this.listSMS)\r\n // if (this.listSMS.length > 0) {\r\n // this._addMeetingAttendeesSMS();\r\n // }\r\n // }\r\n\r\n // _addMeetingAttendeesSMS() {\r\n // this.isSendingSMSInvite = true;\r\n // this.listSMS.forEach((sms: string) => {\r\n // let attendee = {\r\n // \"phoneNumber\": sms,\r\n // \"meetingId\": this.meetingId\r\n // };\r\n // this._meetingService.postGuestMeetingAttendee(attendee)\r\n // .subscribe(res => {\r\n // if (res.status === 201) {\r\n // console.log(\"Attendee Added SMS :::\", res.body)\r\n // let invite = {\r\n // \"inviteEmail\": res.body.email,\r\n // \"meetingId\": this.meetingId\r\n // }\r\n // this._meetingService.sendInviteToken(invite)\r\n // .subscribe(res => {\r\n // if (res.status === 200) {\r\n // console.log(\"Token sent SMS ::\", res)\r\n // this.isSendingSMSInvite = false;\r\n // this.closeInviteModal();\r\n // this.getMeetingAttendees();\r\n // this._toastService.success(`SMS invite was sent to ${sms}.`);\r\n // this.listSMS = [];\r\n // } else {\r\n // console.log(\"error :::\", JSON.stringify(res));\r\n // this.isSendingSMSInvite = false;\r\n // this._toastService.error(`There was an error sending your invite to ${sms}.`);\r\n // this.listSMS = [];\r\n // }\r\n // })\r\n // } else {\r\n // console.log(\"error :::\", JSON.stringify(res));\r\n // this.isSendingSMSInvite = false;\r\n // this._toastService.error(`There was an error sending your invite to ${sms}.`);\r\n // this.listSMS = [];\r\n // }\r\n // });\r\n // });\r\n // }\r\n\r\n // ❌💡 these should be handled in the {\r\n // if (data.status === 200) {\r\n // let searchList = data.body;\r\n // this.searchUsersList = [];\r\n // searchList.forEach((searchUser, index) => {\r\n // if (this._authService._user.profile.sub !== searchUser.channelUserId) {\r\n // if (!this.inviteUsersList.some(listUser => // not already in invite list \r\n // searchUser.channelUserId === listUser.channelUserId)\r\n // && !this.meetingAttendees.some(attendant => // not already in current attendees list \r\n // searchUser.channelUserId === attendant.chatUserKeyNavigation.channelUserId)) {\r\n // this.searchUsersList.push(searchList[index]);\r\n // }\r\n // }\r\n // });\r\n // // this.searchUsersList = data.body;\r\n // // this.searchUsersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // } else {\r\n // console.error(JSON.stringify(data));\r\n // }\r\n // });\r\n // }\r\n // }\r\n\r\n // clearSearch() {\r\n // console.log(\"clear search???\")\r\n // this.userSearchBar = document.getElementById('user-search-create-meeting');\r\n // this.userSearchBar.value = '';\r\n // this.searchUsersList = [];\r\n // }\r\n\r\n // addUserToList(i: number) {\r\n // // this.userSearchBar = document.getElementById('user-search-create-meeting');\r\n // this.inviteUsersList.push(this.searchUsersList[i]);\r\n // // console.log(\"invited users list >\",this.inviteUsersList)\r\n // // this.clearSearch();\r\n // // this.userSearchBar.value = '';\r\n // // this.searchUsersList = [];\r\n // }\r\n\r\n // removeUserFromList(i: number) {\r\n // this.inviteUsersList.splice(i, 1);\r\n // }\r\n\r\n // ADD USERS IN TENNANT TO MEET \r\n // _addMeetingAttendees() {\r\n // // this.clearSearch();\r\n // this.isSendingTennantInvite = true;\r\n // this.inviteUsersList.forEach(user => {\r\n // let attendee = {\r\n // \"channelUserId\": user.channelUserId,\r\n // \"meetingId\": this.meetingId\r\n // };\r\n // console.log(\"Attendee Added from in tennant start\")\r\n // this._meetingService.postMeetingAttendee(attendee)\r\n // .subscribe(res => {\r\n // if (res.status === 201) {\r\n // console.log(\"Attendee Added from in tennant RESULT?\", res)\r\n // this.isSendingTennantInvite = false;\r\n // this.closeInviteModal();\r\n // this.getMeetingAttendees();\r\n // this._toastService.success(`User invite sent to ${user.displayName}.`);\r\n // this.inviteUsersList = [];\r\n // } else {\r\n // console.error(JSON.stringify(res));\r\n // this._toastService.error(`There was an error sending your invite to ${user.displayName}.`);\r\n // this.isSendingTennantInvite = false;\r\n // this.inviteUsersList = [];\r\n // }\r\n // console.log(\"Attendee Added from in tennant RESULT???\", res)\r\n // });\r\n // });\r\n // }\r\n\r\n\r\n// test() {\r\n// this._toastService.continue('cool')\r\n// if (this._toastService.continue('cool')) {\r\n// alert(\"yes\");\r\n// } else { \r\n// alert(\"no\");\r\n// }\r\n// }\r\n\r\n\r\n// ❌ unused ...\r\n\r\n // ❌💡 these should be handled in the {\r\n // if (user.chatUserKeyNavigation.channelUserId === this.channelInfo.channelUserId) {\r\n // this.ownersList.unshift(user.chatUserKeyNavigation)\r\n // if (this.userInfo.channelUserId === this.channelInfo.channelUserId) {\r\n // this.isCreator = true;\r\n // }\r\n // } else {\r\n // this.ownersList.push(user.chatUserKeyNavigation)\r\n // }\r\n // if (user.chatUserKeyNavigation.channelUserId === this.userInfo.channelUserId) {\r\n // this.isOwner = true;\r\n // }\r\n // });\r\n // this.membersList = [];\r\n // this.channelInfo.chatRoomChatUser1.forEach(user => {\r\n // this.membersList.push(user.chatUserKeyNavigation)\r\n // });\r\n // }\r\n\r\n // _getActiveSocketServers(): Promise {\r\n // return this._socketService\r\n // .getActiveSocketServers()\r\n // .toPromise()\r\n // .then((data) => {\r\n // // console.log(\"Getactivesocketservers quick meeting\" + JSON.stringify(data.body));\r\n // this.socketServers = data.body;\r\n // })\r\n // .catch((err) => console.log(err));\r\n // }\r\n\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t
\r\n\t\t\t

\r\n\t\t\t\t{{ channelName }}\r\n\t\t\t

\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{{\r\n\t\t\t\t\tchannelInfo.type === \"direct\"\r\n\t\t\t\t\t\t? \"Direct Message with\"\r\n\t\t\t\t\t\t: (channelInfo.teamProjectKeyNavigation.name | quickmeetingChannelName)\r\n\t\t\t\t}}\r\n\t\t\t\r\n\t\t\t

\r\n\t\t\t\t{{ channelName }}\r\n\t\t\t

\r\n\t\t\t\r\n\t\t\t\t{{ meetingTitle }}\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tChat\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tUsers\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tFiles\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t

Welcome to VIA3 Quick Meeting

\r\n\t\t\r\n\t\t

This meeting has not started yet.

\r\n\t\t\r\n\t\tmeeting will begin {{meetingStart | date: 'M/d/yy h:mm a'}}\r\n\t\t\r\n\t\t

\r\n\t\t\tyou can enter in - {{meetingStartForPipe|timeAgo:true}}\r\n\t\t

\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n\r\n\r\n
\r\n\t
\r\n\t\t

This meeting has ended.

\r\n\t\t

\r\n\t\t\tmeeting ended {{meetingEnd | date: 'M/d/yy h:mm a'}}\r\n\t\t

\r\n\t\t

\r\n\t\t\tmeeting was canceled\r\n\t\t

\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n\r\n\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t

Hello Guest,

\r\n\t\t\t

please enter your name

\r\n\t\t
\r\n\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tName must be at least 2 characters\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tNumbers and Special Characters aren't allowed except for - ' .\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tEnter Meeting\r\n\t\t\t\t Entering\r\n\t\t\t\t\tmeeting...\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n","import { Component, Input, OnInit, Output, EventEmitter, OnDestroy, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { MeetingService } from 'src/app/services/meeting.service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { standardEmailRegex } from 'src/app/shared/varaibles'; // this could break ... if so pass a regex : 'string' ... \r\nimport { consoleLogStyle } from '../../shared/varaibles';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\nimport { ChannelFull } from 'src/app/shared/interface/channel-full';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'manage-users',\r\n templateUrl: './manage-users.component.html',\r\n styleUrls: ['./manage-users.component.scss']\r\n})\r\nexport class ManageUsersComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() isModalVersion: boolean;\r\n @Input() channelInfo: ChannelFull;\r\n @Input('channelId') channelId: string; // if from channel card, need to get channel info with this ... \r\n public isLoadingChannelInfo: boolean;\r\n \r\n @Input() userInfo: ChannelUser;\r\n @Output() channelUpdated = new EventEmitter();\r\n \r\n // new ad-hoc \r\n @Input() isQuickMeeting: boolean;\r\n @Input() isMeetingCreator: boolean;\r\n @Input() meetingId: string;\r\n @Input() meetingAttendees: any[];\r\n @Input() videoStarted: boolean;\r\n @Input() isViewer: boolean;\r\n @Output() updateAttendeesList = new EventEmitter();\r\n\r\n public isAdmin: boolean;\r\n public isCreator: boolean = false; // not needed w/ new input from Channel-Primary ??? \r\n public isOwner: boolean;\r\n\r\n public userSearchBar: HTMLInputElement; // should be using @ViewChild ... \r\n public searchUsersList: any[] = [];\r\n public searchUsersPag: any = {};\r\n\r\n public ownersList: any[] = [];\r\n public memberList: any[] = [];\r\n public inChannelList: any[] = [];\r\n public isloadingUsersInChannel: boolean = true;\r\n\r\n public showUserSearch: boolean;\r\n public showEmailInvite: boolean;\r\n public showSMSInvite: boolean;\r\n public isManagerBeingAdded: boolean;\r\n public isAddingInvite: boolean;\r\n\r\n public inviteForm: FormGroup;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n // for holding the serch string \r\n private searchSubject = new Subject();\r\n\r\n constructor(\r\n private _chManageService: ProjectChannelService,\r\n private _meetingService: MeetingService,\r\n private _channelService: ChannelService,\r\n private _apiCalls: ApiCallsService,\r\n private _authService: AuthService,\r\n private _toastService: ToastNotificationService,\r\n ) {\r\n this.subscriptions.push(this._channelService.onJoinNotification$.subscribe((joinObj: any) => {\r\n this.getChannelUsersInRoom();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUserLeaveEvent$.subscribe((userObj: any) => {\r\n this.getChannelUsersInRoom();\r\n }));\r\n\r\n //When users get added or removed from channel\r\n this.subscriptions.push(this._channelService.onGetChannelUsersInRoomEvent$.subscribe(() => {\r\n // console.log(\"onGetChannelUsersInRoomEvent sub\");\r\n this.channelUpdated.emit();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUpdateUserStatusEvent$.subscribe((channelUserStatusList: any) => {\r\n this.inChannelList.forEach((channel) => {\r\n channelUserStatusList.forEach((channelUser) => {\r\n if (channel.channelUserId === channelUser.channelUserId) {\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n channel.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n channel.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n channel.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n channel.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n channel.userStatus = \"hidden\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n channel.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n channel.userStatus = \"brb\";\r\n }\r\n }\r\n });\r\n });\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onGuestDisplayNameUpdatedEvent$.subscribe((channelId: any) => {\r\n if (this.channelInfo.channelId.toLowerCase() === channelId.toLowerCase()) {\r\n // console.log(\"update guest username sub\");\r\n this.getChannelUsersInRoom();\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.isModalVersion) {\r\n this.allUsersSeperate();\r\n }\r\n if (this.isQuickMeeting) {\r\n this.inviteForm = new FormGroup({\r\n sms: new FormControl('', [\r\n Validators.required, \r\n Validators.minLength(10)\r\n ]),\r\n email: new FormControl('', [\r\n Validators.required, \r\n // this could break ... if so pass a regex : 'string' ... \r\n Validators.pattern(standardEmailRegex)\r\n ]),\r\n });\r\n }\r\n\r\n //creates the search subject for the search debounce\r\n //delays calling the search query until the user paused for the time allotted (400ms here)\r\n this.searchSubject\r\n .pipe(debounceTime(400), distinctUntilChanged())\r\n .subscribe(searchQuery => {\r\n console.log(\"Search Query Passed: \"+ searchQuery); \r\n this._getUsersBySearchQuery();\r\n });\r\n }\r\n\r\n get smsControl() { return this.inviteForm.get('sms'); }\r\n get emailControl() { return this.inviteForm.get('email'); }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.channelInfo) {\r\n if(!!this.channelInfo) {\r\n // console.log(\"%c 👤 owners/managers list changed \", consoleLogStyle, this.ownersList);\r\n // console.log(\"%c 👤 chan info \", consoleLogStyle, this.channelInfo);\r\n this.isLoadingChannelInfo = true;\r\n !this.isModalVersion ? this.allUsersSeperate() : '';\r\n }\r\n }\r\n if (changes.channelId) {\r\n if(!!this.channelId) {\r\n // console.log(\"%c 👤 chan info \", consoleLogStyle, this.channelInfo);\r\n if(this.isModalVersion) {\r\n this.isLoadingChannelInfo = true;\r\n this.getChannel();\r\n } \r\n }\r\n }\r\n if (changes.userInfo) {\r\n this.isAdmin = this.userInfo.roles.some(role => role.toLowerCase() === 'admin')\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n triggerSearch(event: any) {\r\n const searchQuery = (event.target as HTMLInputElement).value;\r\n this.searchSubject.next(searchQuery);\r\n }\r\n\r\n // need to get channel info by id here if modal from channel card ... \r\n getChannel() {\r\n this._apiCalls.getChannel(this.channelId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n this.channelInfo = data.body;\r\n this.allUsersSeperate();\r\n this.getChannelUsersInRoom();\r\n // console.info('channel info?', this.channelInfo)\r\n } else {\r\n console.error(\"error getting channel info by channel id\", data)\r\n this.isLoadingChannelInfo = false;\r\n }\r\n });\r\n }\r\n\r\n // this would not be needed with an update to the channelInfo data object ... \r\n allUsersSeperate() {\r\n this.ownersList = [];\r\n this.channelInfo.chatRoomChatUsers.forEach(user => {\r\n if (user.chatUserKeyNavigation.channelUserId === this.channelInfo.channelUserId) {\r\n this.ownersList.unshift(user.chatUserKeyNavigation)\r\n if (this.userInfo.channelUserId === this.channelInfo.channelUserId) {\r\n this.isCreator = true;\r\n }\r\n } else {\r\n this.ownersList.push(user.chatUserKeyNavigation)\r\n if (this.ownersList.some(listUser => this._authService._user.profile.sub === listUser.channelUserId)) {\r\n this.isOwner = true;\r\n }\r\n }\r\n });\r\n this.memberList = [];\r\n this.channelInfo.chatRoomChatUser1.forEach(user => {\r\n this.memberList.push(user.chatUserKeyNavigation)\r\n });\r\n this.isLoadingChannelInfo = false;\r\n }\r\n\r\n getChannelUsersInRoom() {\r\n this.isloadingUsersInChannel = true;\r\n this._chManageService.getChannelUsersInRoomByChannelId(this.channelInfo.channelId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let chatList = data.body;\r\n chatList = this.updateUsersStatus(chatList);\r\n this.inChannelList = chatList;\r\n this.isloadingUsersInChannel = false;\r\n // console.log(\"%c in channel list? \", consoleLogStyle, this.inChannelList)\r\n } else {\r\n this.isloadingUsersInChannel = false;\r\n console.error(\"there was an error getting in channel list\")\r\n }\r\n });\r\n }\r\n\r\n updateUsersStatus(list: any[]) {\r\n let userList = []\r\n list.forEach(user => {\r\n let channelUser = user.chatUserKeyNavigation;\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n channelUser.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n channelUser.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n channelUser.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n channelUser.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n channelUser.userStatus = \"hidden\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n channelUser.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n channelUser.userStatus = \"brb\";\r\n }\r\n userList.push(channelUser);\r\n });\r\n return userList;\r\n }\r\n\r\n _addOwner(userId: string) {\r\n let owner = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.channelInfo.channelId\r\n };\r\n this._apiCalls.postChannelOwner(owner)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Owner Added\");\r\n this.channelUpdated.emit();\r\n this._channelService.updateChannelUsersInRoomEvent(this.channelInfo.channelId);\r\n } else if (res.status === 409) {\r\n // console.log(\"Owner Already Exists\");\r\n this.channelUpdated.emit();\r\n } else {\r\n console.error(res);\r\n }\r\n this.isAddingInvite = false;\r\n });\r\n }\r\n\r\n _removeOwner(userId: string) {\r\n let owner = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.channelInfo.channelId\r\n };\r\n this._apiCalls.deleteChannelOwner(owner)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"Owner Removed\");\r\n this.channelUpdated.emit();\r\n this._channelService.updateChannelUsersInRoomEvent(this.channelInfo.channelId);\r\n } else if (res.status === 404) {\r\n // console.log(\"Owner does not exist\");\r\n this.channelUpdated.emit();\r\n } else {\r\n console.error(res);\r\n }\r\n });\r\n }\r\n\r\n _addMember(userId: string) {\r\n let member = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.channelInfo.channelId\r\n };\r\n this._apiCalls.postChannelMember(member)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Member Added\");\r\n if (!this.isQuickMeeting) {\r\n this.channelUpdated.emit();\r\n }\r\n this._channelService.updateChannelUsersInRoomEvent(this.channelInfo.channelId);\r\n } else if (res.status === 409) {\r\n // console.log(\"Member Already Exists\");\r\n this.channelUpdated.emit();\r\n } else {\r\n console.error(res);\r\n }\r\n this.isAddingInvite = false;\r\n });\r\n }\r\n\r\n _removeMember(userId: string) {\r\n let member = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.channelInfo.channelId\r\n };\r\n this._apiCalls.deleteChannelMember(member)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"Member Removed\");\r\n if (!this.isQuickMeeting) {\r\n this.channelUpdated.emit();\r\n }\r\n this._channelService.updateChannelUsersInRoomEvent(this.channelInfo.channelId);\r\n } else if (res.status === 404) {\r\n // console.log(\"Member does not exist\");\r\n this.channelUpdated.emit();\r\n } else {\r\n console.error(res);\r\n }\r\n });\r\n }\r\n\r\n _addGuestMeetingAttendee(type: string) {\r\n this.isAddingInvite = true;\r\n let attendee;\r\n if (type === \"email\") {\r\n attendee = {\r\n \"email\": this.inviteForm.value.email,\r\n \"meetingId\": this.meetingId\r\n };\r\n } else if (type === \"sms\") {\r\n attendee = {\r\n \"phoneNumber\": this.inviteForm.value.sms,\r\n \"meetingId\": this.meetingId\r\n };\r\n }\r\n this._meetingService.postGuestMeetingAttendee(attendee)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Attendee Added::\", res.body);\r\n let invite = {\r\n \"inviteEmail\": res.body.email,\r\n \"meetingId\": this.meetingId\r\n }\r\n this._sendInviteToken(invite, attendee);\r\n this.inviteForm.reset();\r\n this._channelService.updateUpcomingMeetingsList(this.meetingId, false, this.channelInfo.channelId);\r\n // this.updateAttendeesList.emit();\r\n } else {\r\n // console.log(\"error :::\", JSON.stringify(res));\r\n if (type === \"email\") {\r\n this._toastService.error(`There was an error sending your email to ${attendee.email}`);\r\n } else if (type === \"sms\") {\r\n this._toastService.error(`There was an error sending your invite to ${attendee.phoneNumber}`);\r\n }\r\n }\r\n this.isAddingInvite = false;\r\n });\r\n }\r\n\r\n _addMeetingAttendee(userIndex: any) {\r\n this.isAddingInvite = true;\r\n let userInfo = this.searchUsersList[userIndex];\r\n let attendee = {\r\n \"channelUserId\": userInfo.channelUserId,\r\n \"meetingId\": this.meetingId\r\n };\r\n // console.log(userInfo)\r\n this._meetingService.postMeetingAttendee(attendee)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"User Attendee Added::\", res.body);\r\n let invite = {\r\n \"inviteEmail\": userInfo.email,\r\n \"meetingId\": this.meetingId\r\n }\r\n this._sendInviteToken(invite, userInfo);\r\n this.clearSearch();\r\n this._channelService.updateUpcomingMeetingsList(this.meetingId, false, this.channelInfo.channelId);\r\n // this.updateAttendeesList.emit();\r\n this._addMember(attendee.channelUserId);\r\n } else {\r\n this._toastService.error(`There was an error inviting ${userInfo.displayName} to this meeting`);\r\n }\r\n this.isAddingInvite = false;\r\n });\r\n }\r\n\r\n _sendInviteToken(invite: any, attendee: any) {\r\n this._meetingService.sendInviteToken(invite)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"Token sent EMAIL ::\", res)\r\n if (attendee.email) {\r\n this._toastService.success(`Email invite was sent to ${attendee.email}`);\r\n } else if (attendee.phoneNumber) {\r\n this._toastService.success(`SMS invite was sent to ${attendee.phoneNumber}`);\r\n } else {\r\n this._toastService.success(`An invite was sent to ${attendee.displayName}`);\r\n }\r\n } else {\r\n // console.log(\"error :::\", JSON.stringify(res));\r\n if (attendee.email) {\r\n this._toastService.error(`There was an error sending your email to ${attendee.email}`);\r\n } else if (attendee.phoneNumber) {\r\n this._toastService.error(`There was an error sending your invite to ${attendee.phoneNumber}`);\r\n } else {\r\n this._toastService.error(`There was an error sending your invite to ${attendee.displayName}`);\r\n }\r\n }\r\n })\r\n }\r\n\r\n showSearch(addingManager: boolean) {\r\n // Do a check here for user role limitation?\r\n if (addingManager) {\r\n this.isManagerBeingAdded = true;\r\n }\r\n else {\r\n this.isManagerBeingAdded = false;\r\n }\r\n this.showUserSearch = true;\r\n }\r\n\r\n hideSearch() {\r\n this.showUserSearch = false;\r\n this.clearSearch();\r\n }\r\n\r\n displayEmailInvite() {\r\n this.showSMSInvite = false;\r\n this.showEmailInvite = true;\r\n }\r\n\r\n displaySMSInvite() {\r\n this.showEmailInvite = false;\r\n this.showSMSInvite = true;\r\n }\r\n\r\n hideInvite() {\r\n this.showEmailInvite = false;\r\n this.showSMSInvite = false;\r\n this.inviteForm.reset();\r\n }\r\n\r\n addUserToChannel(i: number, asOwner: boolean) {\r\n this.isAddingInvite = true;\r\n if (asOwner) {\r\n this._addOwner(this.searchUsersList[i].channelUserId);\r\n } else {\r\n this._addMember(this.searchUsersList[i].channelUserId);\r\n }\r\n this.clearSearch();\r\n this.showUserSearch = false;\r\n }\r\n\r\n removeUserFromList(i: number, isOwner: boolean) {\r\n // console.log(\"Lists Before User Removal:\");\r\n // console.log(\"Owners List: \" + this.ownersList.toString());\r\n // console.log(\"Members List: \" + this.memberList.toString());\r\n if (isOwner) {\r\n if (this.ownersList[i].channelUserId === this.channelInfo.channelUserId) {\r\n this._toastService.error(\"You can not remove the Channel Creator\");\r\n } else {\r\n this._removeOwner(this.ownersList[i].channelUserId);\r\n }\r\n } else {\r\n this._removeMember(this.memberList[i].channelUserId);\r\n }\r\n }\r\n\r\n promoteUser(i: number) {\r\n // console.log(\"Member List Before Promotion: \" + this.memberList);\r\n this._addOwner(this.memberList[i].channelUserId);\r\n this._removeMember(this.memberList[i].channelUserId);\r\n }\r\n\r\n demoteUser(i: number) {\r\n // console.log(\"Owners List Before Demotion: \" + this.memberList);\r\n if (this.ownersList[i].channelUserId === this.channelInfo.channelUserId) {\r\n this._toastService.error(\"You can not demote the Channel Creator\");\r\n } else {\r\n this._addMember(this.ownersList[i].channelUserId);\r\n this._removeOwner(this.ownersList[i].channelUserId);\r\n }\r\n }\r\n\r\n clearSearch() {\r\n this.userSearchBar = document.getElementById('user-search-edit-channel');\r\n this.userSearchBar.value = '';\r\n this.searchUsersList = [];\r\n }\r\n\r\n // GET ALL USERS HERE \r\n _getUsersBySearchQuery() { // CALLED (keyup) of searchbar input\r\n console.log(\"Manage users search query called\");\r\n this.userSearchBar = document.getElementById('user-search-edit-channel');\r\n let searchString = this.userSearchBar.value.replace(/\\s/g, '');\r\n if (searchString.length < 1) {\r\n this.searchUsersList = [];\r\n } else {\r\n this._apiCalls.getChannelUsersByTenantAndSearchQuery(this.userInfo.tenant, searchString)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let searchList = data.body;\r\n let newList = [];\r\n let compareList: any = this.memberList.concat(this.ownersList);\r\n searchList.forEach((searchUser, index) => {\r\n if (this.userInfo.channelUserId !== searchUser.channelUserId) {\r\n if (this.isQuickMeeting) {\r\n if (!compareList.some(listUser => // not already in invite list \r\n searchUser.channelUserId === listUser.channelUserId)\r\n && !this.meetingAttendees.some(attendant => // not already in current attendees list \r\n searchUser.channelUserId === attendant.chatUserKeyNavigation.channelUserId)) {\r\n newList.push(searchList[index]);\r\n }\r\n } else {\r\n if (!compareList.some(listUser => searchUser.channelUserId === listUser.channelUserId)) {\r\n newList.push(searchList[index]);\r\n }\r\n }\r\n }\r\n });\r\n this.searchUsersList = newList;\r\n this.searchUsersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n } else {\r\n console.error(JSON.stringify(data));\r\n }\r\n });\r\n }\r\n }\r\n\r\n _searchMoreUsers(link: any) {\r\n this._apiCalls.getGenericForPagination(link)\r\n .subscribe(data => {\r\n this.searchUsersList = data.body;\r\n this.searchUsersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n });\r\n }\r\n\r\n\r\n // 🚧 new & working for in tennant && guest | need to also cancel token if guest (adrian)?\r\n removeUserFromCurrentAttendeesList(i: number) {\r\n let userId = this.meetingAttendees[i].chatUserKeyNavigation.channelUserId;\r\n let attendeeObject = {\r\n meetingId: this.meetingId,\r\n channelUserId: userId\r\n };\r\n this._meetingService.deleteMeetingAttendee(attendeeObject)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"remove att res?\", res)\r\n this._channelService.updateUpcomingMeetingsList(this.meetingId, false, this.channelInfo.channelId);\r\n // this.updateAttendeesList.emit();\r\n this._removeMember(attendeeObject.channelUserId);\r\n } else {\r\n console.error(\"error deleting meeting attendee?\", res)\r\n }\r\n });\r\n }\r\n\r\n // Meeting options & add users dropdowns ... \r\n // on (click) \r\n showMemberDropdown(i: number) {\r\n const options = document.getElementById(`manage-member-dropdown-${i}`);\r\n options.classList.add('active');\r\n }\r\n\r\n showManagerDropdown(i: number) {\r\n const options = document.getElementById(`manage-manager-dropdown-${i}`);\r\n options.classList.add('active');\r\n }\r\n\r\n\r\n // on (mouseleave) \r\n hideMemberDropdown(i: number) {\r\n const options = document.getElementById(`manage-member-dropdown-${i}`);\r\n options.classList.remove('active');\r\n }\r\n\r\n hideManagerDropdown(i: number) {\r\n const options = document.getElementById(`manage-manager-dropdown-${i}`);\r\n options.classList.remove('active');\r\n }\r\n\r\n handleBrokenImage(listName:string, userIdx:number) {\r\n switch (listName) {\r\n case \"inChannelList\": {\r\n this.inChannelList[userIdx].hash = \"1\";\r\n break;\r\n }\r\n case \"searchUsersList\": {\r\n this.searchUsersList[userIdx].hash = \"1\";\r\n break;\r\n }\r\n case \"ownersList\": {\r\n this.ownersList[userIdx].hash = \"1\";\r\n break;\r\n }\r\n case \"memberList\": {\r\n this.memberList[userIdx].hash = \"1\";\r\n break;\r\n }\r\n case \"meetingAttendees\": {\r\n this.meetingAttendees[userIdx].chatUserKeyNavigation.hash = \"1\";\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n","\r\n \r\n
\r\n
\r\n \r\n

\r\n {{ channelInfo.name }}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n In Channel Now\r\n \r\n \r\n 0 && !isloadingUsersInChannel\"\r\n class=\"channel-users in-channel\">\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{user.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{ user.displayName }}\r\n \r\n
\r\n
\r\n \r\n \r\n

Loading Users ...

\r\n
\r\n \r\n

No users in channel.

\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n Add Managers\r\n \r\n \r\n Add Members\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\"\r\n class=\"custom-select-list\">\r\n \r\n
\r\n \r\n \r\n
\r\n {{user.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n
\r\n {{ user.displayName }}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n No Users Found\r\n

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Managers\r\n \r\n \r\n 0\"\r\n class=\"channel-users\">\r\n \r\n
\r\n \r\n \r\n
\r\n {{user.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n
\r\n {{ user.displayName }}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Make A Member\r\n \r\n \r\n \r\n \r\n \r\n \r\n Remove From Channel\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n

There are no managers

\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n Members\r\n \r\n \r\n 0\"\r\n class=\"channel-users\">\r\n \r\n
\r\n \r\n \r\n
\r\n {{user.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n
\r\n {{ user.displayName }}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Make A Manager\r\n \r\n \r\n \r\n \r\n \r\n \r\n Remove From Channel\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n

There are no members

\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Invite By Email\r\n \r\n \r\n Invite By SMS\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Send\r\n \r\n \r\n Send\r\n \r\n \r\n Cancel\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n Invitees\r\n
\r\n
0\">\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{user.chatUserKeyNavigation.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{\r\n user.chatUserKeyNavigation\r\n .displayName\r\n }}\r\n {{\r\n user.chatUserKeyNavigation.username\r\n }}\r\n
\r\n \r\n \r\n
\r\n {{\r\n user.chatUserKeyNavigation\r\n .displayName\r\n }}\r\n {{\r\n user.chatUserKeyNavigation.email ||\r\n (user.chatUserKeyNavigation\r\n .phone\r\n | mask: \"(000) 000-0000\")\r\n }}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n

There are no invitees

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n","import { Component, Inject, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { AppComponent } from \"../app.component\";\r\nimport { MeetingService } from \"../services/meeting.service\";\r\nimport { \r\n listAnimationWrap, \r\n listAnimationItem, \r\n listAnimationWrapLong, \r\n listAnimationItemLong, } from \"../animations/global-animations\";\r\nimport { ToastNotificationService } from \"../services/toast-notification.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { consoleLogStyle } from '../shared/varaibles';\r\nimport { MeetingEvent } from \"../shared/interface/meeting-event\";\r\n\r\n\r\n\r\ninterface NdiaSchedule {\r\n day: string,\r\n events: any[]\r\n};\r\n\r\n@Component({\r\n selector: \"conference-full-schedule\",\r\n templateUrl: \"./conference-full-schedule.component.html\",\r\n styleUrls: [\"./conference-full-schedule.component.scss\"],\r\n animations: [\r\n listAnimationWrap, \r\n listAnimationItem, \r\n listAnimationItemLong, \r\n listAnimationWrapLong, \r\n ],\r\n})\r\nexport class ConferenceFullScheduleComponent implements OnInit, OnDestroy {\r\n\r\n public userInfo: any = this._appComp.channelUserInfo;\r\n \r\n public isLoadingNdiaEvents: boolean;\r\n public ndiaEvents: NdiaSchedule[] = [\r\n {day: 'Tuesday, February 15th', events: []},\r\n {day: 'Wednesday, February 16th', events: []},\r\n {day: 'Thursday, February 17th', events: []}\r\n ];\r\n\r\n public todaysCurrentDateTime: any = new Date();\r\n public setCurrentDateTimeInterval: any;\r\n public selectedMeeting: MeetingEvent;\r\n public displayMeetingInfoModal: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _toast: ToastNotificationService,\r\n private _meetingService: MeetingService,\r\n private _appComp: AppComponent,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.isLoadingNdiaEvents = true;\r\n this._getMeetings();\r\n // interval is cleared onDestroy \r\n this.setCurrentDateTimeInterval = setInterval(() => {\r\n this.todaysCurrentDateTime = new Date().toISOString(); // so we can use math on date for comparison: todaysDate > meeting.start\r\n // console.log(\"%c Current time \", consoleLogStyle, this.todaysCurrentDateTime);\r\n }, 1000); // keep current time for to show the \"meeting in progress badge\"\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n clearInterval(this.setCurrentDateTimeInterval);\r\n }\r\n\r\n _getMeetings() {\r\n this._meetingService.getUserMeetingsFutureNoPagination(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n data.body;\r\n this.sortNdiaEvents(data.body);\r\n // this.isLoadingNdiaEvents = false;\r\n } else if (data.status === 404) {\r\n console.error(JSON.stringify(data));\r\n this.isLoadingNdiaEvents = false;\r\n } else {\r\n this._toast.error(\"There was an error getting NDIA events.\");\r\n console.error(JSON.stringify(data));\r\n this.isLoadingNdiaEvents = false;\r\n }\r\n });\r\n }\r\n\r\n sortNdiaEvents(events:any[]) {\r\n // console.log(\"%c 🎟 NDIA events (un-sorted): \", consoleLogStyle, events)\r\n // compare againts the 3 days \r\n const day1 = '02-15', day2 = '02-16', day3 = '02-17';\r\n // let day2 = '';\r\n // let day3 = '';\r\n events.forEach(meeting => {\r\n if (meeting.start.includes(day1)) {\r\n this.ndiaEvents[0].events.push(meeting);\r\n } else if (meeting.start.includes(day2)) {\r\n this.ndiaEvents[1].events.push(meeting);\r\n } else if (meeting.start.includes(day3)) {\r\n this.ndiaEvents[2].events.push(meeting);\r\n }\r\n });\r\n // console.log(\"%c 🎟 NDIA events [sorted]: \", consoleLogStyle, this.ndiaEvents)\r\n // console.table(this.ndiaEvents)\r\n this.isLoadingNdiaEvents = false;\r\n }\r\n\r\n prevDefStopProp(e: Event) {\r\n // console.log('oi')\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n // meeting info modal\r\n showMeetingInfoModal(dayIdx: number, eventIdx: number) {\r\n this.selectedMeeting = this.ndiaEvents[dayIdx].events[eventIdx];\r\n this.displayMeetingInfoModal = true;\r\n }\r\n closeMeetingInfoModal() {\r\n this.displayMeetingInfoModal = false;\r\n }\r\n clickOffScheduleModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n switch (value) {\r\n case 'meeting-info-modal': {\r\n this.closeMeetingInfoModal();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // 🚧 Meeting options dropdown ... \r\n // on (click) \r\n showMeetingOptionsDropdown(dayIdx: number, eventIdx: number, e?: Event) {\r\n const options = document.getElementById(`meeting-options-dropdown-${dayIdx}-${eventIdx}`);\r\n options.classList.add('active');\r\n\r\n // also hide scrollbar ... \r\n let scrollBox = document.getElementById('ndiaScrollbox');\r\n scrollBox.classList.add('hidden');\r\n }\r\n\r\n // on (mouseleave) \r\n hideMeetingOptionsDropdown(dayIdx: number, eventIdx: number, e?: Event) {\r\n const options = document.getElementById(`meeting-options-dropdown-${dayIdx}-${eventIdx}`);\r\n options.classList.remove('active');\r\n\r\n let scrollBox = document.getElementById('ndiaScrollbox');\r\n scrollBox.classList.remove('hidden');\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n //For Join Call ... ❓ do we need this ... idts ... \r\n // joinChannelCall(e: Event) {\r\n // this.prevDefStopProp(e);\r\n // this._channelService.jitsiSelfJoinEvent(this.incomingChannelObject.channelId);\r\n // }","
\r\n \r\n
\r\n
\r\n Organization:
Net Inclusion 2022
\r\n
\r\n

NDIA full schedule

\r\n • by day\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n

{{schedule.day}}

\r\n \r\n •\r\n {{schedule.events.length}} Events\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n","export const ConstantsLocal = {\r\n // **** Local\r\n // ** If testing other apps locally as well, switch to localHost urls\r\n // ** All but this repo's application is being tested using the dev environment\r\n clientId: 'unity-web-client',\r\n wwwSite: 'https://localhost:44306/',\r\n // accountSite: 'https://localhost:44301/',\r\n accountSite: 'https://account.dev-via3.com/',\r\n //adminSite: 'https://localhost:44302/',\r\n adminSite: 'https://admin.dev-via3.com/',\r\n unitySite: 'https://localhost:44304/',\r\n // signalRSite: 'https://localhost:44309/',\r\n signalRSite: 'https://wsapi.dev-via3.com/',\r\n clientRoot: 'https://localhost:44304/',\r\n // apiRoot: 'https://localhost:44303/',\r\n apiRoot:'https://apicore.dev-via3.com/',\r\n // stsAuthority: 'https://localhost:44305/',\r\n stsAuthority: 'https://idp.dev-via3.com/',\r\n gettingStartedSite: 'https://www.via3.com/getting-started/',\r\n isProd: false,\r\n directMessageProjId : \"9052af8d-dbf5-411d-a6c4-48c27a4e8e2f\",\r\n quickMeetingProjId : \"11ee030f-d0d0-450c-a6b1-976e52d11f97\",\r\n jitsiDomain : 'meet.dev-via3.com',\r\n version: '0.0.2',\r\n publishDate: '0.0.1'\r\n};\r\n\r\nexport const ConstantsRuntime = {\r\n clientId: '#{client-id}#',\r\n wwwSite: '#{www-site}#',\r\n accountSite: '#{account-site}#',\r\n adminSite: '#{admin-site}#',\r\n unitySite: '#{unity-site}#',\r\n gettingStartedSite: '#{getting-started-site}#',\r\n signalRSite: '#{signalR-site}#',\r\n clientRoot: '#{client-root}#',\r\n apiRoot: '#{api-root}#',\r\n stsAuthority: '#{sts-authority}#',\r\n isProd: '#{is-prod}#',\r\n directMessageProjId : '#{directMessage-proj-id}#',\r\n quickMeetingProjId : '#{quick-meeting-proj-id}#',\r\n jitsiDomain : '#{jitsi-domain}#',\r\n version: '#{buildVersion}#',\r\n publishDate: '#{releaseVersion}#',\r\n};\r\n\r\nexport const Constants = (window.location.href.indexOf('localhost:') > -1 ? ConstantsLocal : ConstantsRuntime);\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { ContactsHomepageComponent } from './contacts-homepage/contacts-homepage.component';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot([\r\n { path: 'contacts', component: ContactsHomepageComponent }\r\n ])],\r\n exports: [RouterModule]\r\n})\r\nexport class ContactsAppRoutingModule { }\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport { ContactsAppRoutingModule } from './contacts-app-routing.module';\r\nimport { ContactsHomepageComponent } from './contacts-homepage/contacts-homepage.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n ContactsHomepageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ContactsAppRoutingModule,\r\n BrowserModule,\r\n NgxMaskModule.forRoot(),\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SharedModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class ContactsAppModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { GuestService } from 'src/app/services/guest.service';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\n\r\n@Component({\r\n selector: 'app-contacts-homepage',\r\n templateUrl: './contacts-homepage.component.html',\r\n styleUrls: ['./contacts-homepage.component.scss']\r\n})\r\nexport class ContactsHomepageComponent implements OnInit, OnDestroy {\r\n public userInfo: ChannelUser = this._authService._channelUserInfo;\r\n\r\n public _isSignedIn: boolean = false;\r\n\r\n public userCheck: any = {\r\n initial: false,\r\n loaded: false\r\n };\r\n\r\n // ad-hoc guest lock out \r\n public isGuest: boolean;\r\n public isViewer: boolean = this._authService._userHighestRole === \"Viewer\";\r\n\r\n public subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _guestService: GuestService,\r\n private _authService: AuthService,\r\n ) {\r\n\r\n this.subscriptions.push(\r\n this._authService.channelUserInfoChanged$.subscribe(() => {\r\n this.userInfo = this._authService._channelUserInfo;\r\n this.isViewer = this._authService._userHighestRole === \"Viewer\"\r\n this.isGuest = this.userInfo.isGuest;\r\n if (this.isGuest) {\r\n this._guestService.routeToChannelInvited();\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.userInfo) {\r\n this.isGuest = this.userInfo.isGuest;\r\n if (this.isGuest) {\r\n this._guestService.routeToChannelInvited();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n}\r\n","\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport {\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpResponse,\r\n HttpHandler,\r\n HttpHeaders,\r\n HttpRequest,\r\n HttpErrorResponse\r\n} from '@angular/common/http';\r\n\r\n// import { Observable } from 'rxjs';\r\n// import 'rxjs/add/operator/do';\r\nimport { from, Observable } from 'rxjs';\r\nimport { of } from 'rxjs';\r\nimport { tap, catchError } from 'rxjs/operators';\r\n\r\nimport { AuthService } from './auth.service';\r\nimport { Constants } from '../constants';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n constructor(private _authService: AuthService, private _router: Router) {\r\n //console.log('********* test req.url: ' + req.url);\r\n }\r\n \r\n intercept(\r\n req: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n\r\n // console.log('********* req.url: ' + req.url);\r\n //alert(req.url);\r\n\r\n //if (req.url.startsWith(Constants.apiRoot)) {\r\n return from(this._authService.getAccessToken()\r\n .then(token => {\r\n\r\n const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);\r\n const authReq = req.clone({ headers });\r\n\r\n return next.handle(authReq).pipe(tap(_ => { }, error => {\r\n const respError = error as HttpErrorResponse;\r\n\r\n if (respError && (respError.status === 401 )) {\r\n this._router.navigate(['/unauthorized']);\r\n }\r\n })).toPromise();\r\n }));\r\n //}\r\n //else {\r\n // return next.handle(req);\r\n //}\r\n\r\n\r\n\r\n ////if (req.url.startsWith(Constants.apiRoot)) {\r\n // if (this.startsWith(req.url, Constants.apiRoot) ||\r\n // this.startsWith(req.url, Constants.stsAuthority)) {\r\n //\r\n // const accessToken = this._authService.getAccessToken();\r\n // const headers = req.headers.set('Authorization', `Bearer ${accessToken}`);\r\n // const authReq = req.clone({ headers });\r\n //\r\n // //alert(req.url);\r\n // //console.log(`********* accessToken: ${accessToken}`);\r\n //\r\n // //return next.handle(authReq).do(() => {}, error => {\r\n // // const respError = error as HttpErrorResponse;\r\n //\r\n // // if (respError && (respError.status === 401 || respError.status === 403)) {\r\n // // this._router.navigate(['/unauthorized']);\r\n // // }\r\n // //});\r\n //\r\n // return next.handle(authReq).pipe(\r\n // tap(\r\n // event => this.handleResponse(authReq, event),\r\n // error => this.handleError(authReq, error)\r\n // )\r\n // );\r\n //\r\n //} else {\r\n // return next.handle(req);\r\n //}\r\n }\r\n\r\n //handleResponse(req: HttpRequest, event) {\r\n // console.log('Handling response for ', req.url, event);\r\n // if (event instanceof HttpResponse) {\r\n // console.log('Request for ', req.url,\r\n // ' Response Status ', event.status,\r\n // ' With body ', event.body);\r\n // }\r\n //}\r\n //\r\n //handleError(req: HttpRequest, event) {\r\n // console.error('Request for ', req.url,\r\n // ' Response Status ', event.status,\r\n // ' With error ', event.error);\r\n //\r\n // const respError = event.error as HttpErrorResponse;\r\n //\r\n // if (respError && (respError.status === 401 || respError.status === 403)) {\r\n // this._router.navigate(['/unauthorized']);\r\n // }\r\n //}\r\n\r\n //startsWith(str, word) {\r\n // return str.lastIndexOf(word, 0) === 0;\r\n //}\r\n //\r\n //endsWith(str, word) {\r\n // return str.indexOf(word, str.length - word.length) !== -1;\r\n //}\r\n}\r\n","import { Injectable, EventEmitter } from \"@angular/core\";\r\nimport { HttpClient, HttpHeaders, HttpResponse } from \"@angular/common/http\";\r\nimport { catchError } from \"rxjs/operators\";\r\nimport { BehaviorSubject, Observable, of } from \"rxjs\";\r\nimport { UserManager, User, WebStorageStateStore, Log } from \"oidc-client\";\r\nimport { Constants } from \"../constants\";\r\nimport { Utils } from \"./utils\";\r\nimport { AuthContext } from \"../model/auth-context\";\r\nimport { Subject } from \"rxjs\";\r\nimport { consoleLogStyle } from \"../shared/varaibles\";\r\nimport { ChannelUser } from \"../shared/interface/channel-user\";\r\nimport { TenantData } from \"../shared/interface/tenant-data\";\r\n\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AuthService {\r\n private _userManager: UserManager;\r\n public _user: User;\r\n\r\n //universal Properties\r\n public _userInfo: any;// same as _user.profile \r\n public _channelUserInfo: ChannelUser;\r\n public _userHighestRole: string = null;\r\n public _tenant: TenantData;\r\n public _userStatus: string = \"active\";\r\n\r\n private userChange: Subject = new Subject();\r\n private _signInChangedSubject = new Subject();\r\n // private _updateChannelUserInfoSubject = new Subject();\r\n private _channelUserInfoChangedSubject = new Subject();\r\n\r\n // not updating other users, need the id of user that did the thing, may need custom type w/ id & new val ... \r\n public displayNameBehaviorSubject = new BehaviorSubject('');\r\n public userHashBehaviorSubject = new BehaviorSubject('');\r\n \r\n public userChange$ = this.userChange.asObservable();\r\n public signInChanged$ = this._signInChangedSubject.asObservable();\r\n // public updateChannelUserInfo$ = this._updateChannelUserInfoSubject.asObservable();\r\n public channelUserInfoChanged$ = this._channelUserInfoChangedSubject.asObservable();\r\n private authContext: AuthContext;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n // Log.logger = console; // comment out for to stop logs <-----<<<|)\r\n this._user = JSON.parse(localStorage.getItem(`oidc.user:${Constants.stsAuthority}:unity-web-client`));\r\n if (this._user) {\r\n //May be to fast to emit to emit app comp but sets default values\r\n // console.log(\"First Set User\", this._user.profile);\r\n this.setUserInfo();\r\n }\r\n const stsSettings = {\r\n authority: Constants.stsAuthority,\r\n client_id: Constants.clientId,\r\n redirect_uri: `${Constants.clientRoot}signin-callback`,\r\n scope: \"openid unity-api profile\",\r\n response_type: \"code\", //'id_token token',\r\n post_logout_redirect_uri: `${Constants.clientRoot}signout-callback`,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri: `${Constants.clientRoot}assets/silent-callback.html`,\r\n userStore: new WebStorageStateStore({ store: window.localStorage })\r\n };\r\n this._userManager = new UserManager(stsSettings);\r\n this._userManager.events.addAccessTokenExpired((_) => {\r\n this._signInChangedSubject.next(false);\r\n });\r\n this._userManager.events.addUserLoaded((user) => {\r\n if (this._user?.profile?.sub !== user?.profile?.sub) {\r\n this._user = user;\r\n this.loadSecurityContext();\r\n this._signInChangedSubject.next(!!user && !user.expired);\r\n // console.log(\"User manager Set User\", this._user.profile);\r\n this.setUserInfo();\r\n }\r\n });\r\n }\r\n\r\n emitUserChangeEvent(user) {\r\n // console.log(\"EMIT-------\")\r\n this.userChange.next(user);\r\n }\r\n\r\n private setUserInfo() {\r\n this._userInfo = this._user.profile;\r\n if (this._userInfo) {\r\n this._userHighestRole = this.highestRoleSet();\r\n this._tenant = {\r\n tenantCode: this._userInfo.tenantCode,\r\n tenantId: this._userInfo.tenantId,\r\n tenantName: this._userInfo.tenantName\r\n };\r\n this.emitUserChangeEvent(this._userInfo);\r\n } else {\r\n this._userHighestRole = null;\r\n this._tenant = {\r\n tenantCode: null,\r\n tenantId: null,\r\n tenantName: null\r\n };\r\n this.emitUserChangeEvent(this._userInfo);\r\n }\r\n }\r\n\r\n private highestRoleSet(): string {\r\n if (this._userInfo.role.some(role => role.toLowerCase() === 'admin')) {\r\n return 'Admin';\r\n } else if (this._userInfo.role.some(role => role.toLowerCase() === 'manager')) {\r\n return 'Manager';\r\n } else if (this._userInfo.role.some(role => role.toLowerCase() === 'user')) {\r\n return 'User';\r\n } else if (this._userInfo.role.some(role => role.toLowerCase() === 'guest')) {\r\n return 'Guest';\r\n } else if (this._userInfo.role.some(role => role.toLowerCase() === 'viewer')) {\r\n return 'Viewer';\r\n } else {\r\n return null\r\n }\r\n }\r\n\r\n // used to get AuthUser ... not same as ChannelUser ... \r\n getMembershipUserInfo(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.stsAuthority}connect/userinfo`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError((err) => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // used to get full ChannelUser ... \r\n getChannelUserInfo(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channelUser/` + this._user.profile.sub, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError((err) => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // 🚧 login ??? i dont think we use this one was just testing ...\r\n loginUser(userObject: any) {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.stsAuthority}account/SpaLogin`, userObject, {\r\n headers: headersConfig,\r\n observe: \"response\",\r\n })\r\n .pipe(\r\n catchError((err) => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n signIn() {\r\n return this._userManager.signinRedirect();\r\n }\r\n\r\n completeSignIn() {\r\n return this._userManager.signinRedirectCallback().then((user) => {\r\n this._user = user;\r\n this._signInChangedSubject.next(!!user && !user.expired);\r\n return user;\r\n });\r\n }\r\n\r\n signInSilent() {\r\n this._userManager.signinSilent();\r\n }\r\n\r\n signOut(): Promise {\r\n localStorage.clear();\r\n return this._userManager.signoutRedirect();\r\n }\r\n\r\n completeSignOut() {\r\n this._user = null;\r\n this._signInChangedSubject.next(false);\r\n return this._userManager.signoutRedirectCallback();\r\n }\r\n\r\n isSignedIn(fromAppComp:boolean): Promise {\r\n //fromAppComp Tempory Until isSigned is removed from unecessary components\r\n return this._userManager.getUser().then((user) => {\r\n const userCurrent = !!user && !user?.expired;\r\n if (this._user !== user) {\r\n this._signInChangedSubject.next(userCurrent);\r\n }\r\n if (userCurrent && !this.authContext) {\r\n this.loadSecurityContext();\r\n }\r\n\r\n this._user = user;\r\n if (this._user && fromAppComp) {\r\n // console.log(\"Is Signed In Set User\", this._user.profile);\r\n this.setUserInfo();\r\n }\r\n return userCurrent;\r\n });\r\n }\r\n\r\n getAccessToken() {\r\n return this._userManager.getUser().then((user) => {\r\n if (!!user && !user.expired) {\r\n return user.access_token;\r\n } else {\r\n return null;\r\n }\r\n });\r\n }\r\n\r\n signoutRedirectCallback(): Promise {\r\n return this._userManager.signoutRedirectCallback();\r\n }\r\n\r\n loadSecurityContext() {\r\n this.httpClient\r\n .get(`${Constants.apiRoot}account/authcontext`)\r\n .subscribe(\r\n (context) => {\r\n this.authContext = new AuthContext();\r\n this.authContext.claims = context.claims;\r\n this.authContext.userProfile = context.userProfile;\r\n },\r\n (error) => console.error(Utils.formatError(error))\r\n );\r\n }\r\n\r\n changePassword(passwordObject: any) {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(\r\n `${Constants.apiRoot}account/changepassword`,\r\n passwordObject,\r\n { headers: headersConfig, observe: \"response\" }\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getOrganizationInfoByUserId(userId: string) {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}tenant/organizationInfo/` + userId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError((err) => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // public channelUserInfoHasUpdated() { \r\n // this._updateChannelUserInfoSubject.next();\r\n // }\r\n\r\n public channelUserInfoHasChanged() {\r\n this._channelUserInfoChangedSubject.next();\r\n }\r\n\r\n removeUserAuthentication() {\r\n return this._userManager.removeUser();\r\n }\r\n\r\n patchUser(userObj: any): Observable {\r\n var headersConfig = new HttpHeaders();\r\n let userArr = [userObj];\r\n return this.httpClient\r\n .patch(`${Constants.apiRoot}aspNetUsers/${this._userInfo.sub}`, userArr, { headers: headersConfig })\r\n // , observe: \"response\" \r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n //toast ... \r\n })\r\n );\r\n }\r\n\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\n\r\nexport class Utils {\r\n public static formatError(error: HttpErrorResponse): string {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n return 'An error occurred: ' + error.error.message;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n let msg = 'Unknown error';\r\n\r\n if (error.error && typeof error.error === 'string') {\r\n msg = error.error as string;\r\n\r\n } else if (error.message) {\r\n msg = error.message;\r\n }\r\n\r\n return `Backend returned code ${error.status}, ${error.error}`;\r\n }\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms'; //Import for Forms\r\nimport { ToastNotificationService } from '../services/toast-notification.service'; //Import for Toast Notifications\r\n\r\n@Component({\r\n selector: 'app-element-examples',\r\n templateUrl: './element-examples.component.html',\r\n styleUrls: ['./element-examples.component.scss']\r\n})\r\nexport class ElementExamplesComponent implements OnInit {\r\n //Properties needed for Modals\r\n public displayModal: boolean = false;\r\n public displaySelectModal: boolean = false;\r\n\r\n //Properties needed for Forms\r\n public formGroupExample: FormGroup;\r\n\r\n //properties for display purposes\r\n public disableButtons = false;\r\n public radio = 'radio1';\r\n public todaysDate: Date = new Date();\r\n public minDate: Date;\r\n public maxDate: Date;\r\n\r\n constructor(\r\n private _formBuilder: FormBuilder, //Import for Forms\r\n private _toastService: ToastNotificationService, //Import for Toast\r\n ) { \r\n const currentYear = new Date().getFullYear();\r\n this.minDate = new Date(this.todaysDate);\r\n this.maxDate = new Date(currentYear + 1, 11, 31);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createForm();\r\n }\r\n\r\n //Methods for display purposes\r\n public toggleDisableButtons() {\r\n this.disableButtons = this.disableButtons ? false : true;\r\n }\r\n\r\n\r\n //Methods needed for Modals\r\n public showModal() {\r\n this.displayModal = true;\r\n }\r\n\r\n public closeModal() {\r\n this.displayModal = false;\r\n }\r\n\r\n public clickOffModalEvent(event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n\r\n if (value === \"modal-id\") {\r\n this.closeModal();\r\n }\r\n }\r\n\r\n //Methods needed for Custom Select Modal\r\n showSelectModal() {\r\n this.displaySelectModal = true;\r\n }\r\n closeSelectModal() {\r\n this.displaySelectModal = false;\r\n }\r\n\r\n ///Methods for Forms\r\n createForm() {\r\n this.formGroupExample = this._formBuilder.group({\r\n inputTextExample: [''],\r\n inputTextExampleRequired: ['', [Validators.required]],\r\n selectExample: ['']\r\n });\r\n }\r\n\r\n get formControls() { return this.formGroupExample.controls; }\r\n\r\n formSubmitted() {\r\n alert(JSON.stringify(this.formGroupExample.value));\r\n }\r\n\r\n\r\n //Examples of Toast Notifications\r\n public toastExamples() {\r\n this._toastService.showToastExamples();\r\n }\r\n\r\n}\r\n","\r\n\r\n

Buttons

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n

Interactive Controllers

\r\n
\r\n \r\n Disable Buttons Toggle\r\n \r\n \r\n \r\n Tool Tip Hover\r\n \r\n \r\n
\r\n\r\n

Form Items

\r\n
\r\n \r\n

Inputs

\r\n \r\n \r\n \r\n\r\n \r\n

Date Inputs

\r\n \r\n \r\n\r\n \r\n

Time Inputs

\r\n \r\n\r\n \r\n

Radio Inputs

\r\n \r\n \r\n \r\n \r\n \r\n Angular Material Radio\r\n \r\n \r\n\r\n \r\n

Checkboxes

\r\n \r\n \r\n \r\n \r\n\r\n \r\n

Input Group

\r\n
\r\n \r\n \r\n\r\n
\r\n
Custom Select Item 1
\r\n
Custom Select Item 2
\r\n
Custom Select Item 3
\r\n
\r\n
\r\n\r\n \r\n

Selects

\r\n \r\n\r\n \r\n \r\n No Value Selected\r\n \r\n Option 1 \r\n Option 2 \r\n Option 3 \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n

Textareas

\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n

Form Example

\r\n \r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Submit\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n
\r\n \r\n

Modal Title

\r\n

\r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet\r\n justo in justo euismod, vel varius sapien commodo. Aenean at justo\r\n fringilla, posuere eros vel, fringilla lorem. Curabitur ac fermentum\r\n massa, a euismod ex. Suspendisse nec libero vitae dolor condimentum\r\n vestibulum. Mauris non sapien ac mi iaculis malesuada. Suspendisse\r\n laoreet scelerisque ante, vel pellentesque risus aliquet vitae. Sed\r\n maximus euismod ipsum, quis viverra lacus finibus at. Nulla est\r\n mauris, malesuada ac mauris a, interdum sodales quam. Suspendisse\r\n condimentum aliquam faucibus. Maecenas at scelerisque felis.\r\n Vestibulum ante ipsum primis in faucibus orci luctus et ultrices\r\n posuere cubilia curae; Donec auctor consectetur elit, sed faucibus\r\n urna mollis quis. Morbi id metus massa. Vestibulum libero turpis,\r\n porttitor a odio sit amet, suscipit fermentum arcu. Morbi enim\r\n lectus, molestie sit amet velit quis, pulvinar fermentum sem.\r\n

\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n

Text Displays

\r\n
\r\n

Box Quote Text:

\r\n
\r\n \r\n
\r\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet\r\n justo in justo euismod, vel varius sapien commodo. Aenean at justo\r\n fringilla, posueree eros vel, fringilla lorem. Curabitur ac\r\n fermentum massa, a euismod ex. Suspendisse nec libero vitae dolor\r\n condimentum vestibulum. Mauris non sapien ac mi iaculis malesuada.\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { EventsHomepageComponent } from './events-homepage/events-homepage.component';\r\n\r\n// const routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot([\r\n { path: 'events', component: EventsHomepageComponent }\r\n ])],\r\n exports: [RouterModule]\r\n})\r\nexport class EventsAppRoutingModule { }\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\nimport { EventsAppRoutingModule } from './events-app-routing.module';\r\nimport { EventsHomepageComponent } from './events-homepage/events-homepage.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n EventsHomepageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n NgxMaskModule.forRoot(),\r\n FormsModule,\r\n EventsAppRoutingModule,\r\n ReactiveFormsModule,\r\n SharedModule\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class EventsAppModule { }\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { GuestService } from 'src/app/services/guest.service';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\n\r\n@Component({\r\n selector: 'app-events-homepage',\r\n templateUrl: './events-homepage.component.html',\r\n styleUrls: ['./events-homepage.component.scss']\r\n})\r\nexport class EventsHomepageComponent implements OnInit, OnDestroy {\r\n public userInfo: ChannelUser = this._authService._channelUserInfo;\r\n\r\n // ad-hoc guest lock out \r\n public isGuest: boolean;\r\n public isViewer: boolean; // NDIA\r\n\r\n public subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _guestService: GuestService,\r\n private _authService: AuthService,\r\n ) {\r\n this.subscriptions.push(\r\n this._authService.channelUserInfoChanged$.subscribe(() => {\r\n this.userInfo = this._authService._channelUserInfo;\r\n this.isGuest = this.userInfo.isGuest;\r\n if (this.isGuest) {\r\n this._guestService.routeToChannelInvited();\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.userInfo) {\r\n this.isGuest = this.userInfo.isGuest;\r\n if (this.isGuest) {\r\n this._guestService.routeToChannelInvited();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n}\r\n","\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FaxHomepageComponent } from './fax-homepage/fax-homepage.component';\r\n\r\n//import { AuthGuard } from '../core/authguard';\r\n\r\n// const routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild([\r\n { path: 'fax', component: FaxHomepageComponent }\r\n ])],\r\n exports: [RouterModule]\r\n})\r\nexport class FaxAppRoutingModule { }","import { NgModule} from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FaxAppRoutingModule } from './fax-app-routing.module';\r\nimport { FaxHomepageComponent } from './fax-homepage/fax-homepage.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\n\r\n@NgModule({\r\n declarations: [\r\n FaxHomepageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SharedModule,\r\n FaxAppRoutingModule,\r\n NgxMaskModule.forRoot(),\r\n ],\r\n exports: [\r\n FaxHomepageComponent\r\n ]\r\n})\r\nexport class FaxAppModule { }\r\n","import { Component, OnInit, OnDestroy, Input, OnChanges, SimpleChanges, AfterViewInit, ChangeDetectorRef } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { FileStorageService } from 'src/app/services/file-storage.service';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport {\r\n fadeIn,\r\n fadeInFast,\r\n rotateInOut,\r\n slideInLeft,\r\n slideInRight,\r\n listAnimationWrap,\r\n listAnimationItem\r\n} from 'src/app/animations/global-animations';\r\nimport { Validators, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { TokenCredential } from '@azure/core-http';\r\nimport { BlobServiceClient, BlockBlobClient } from '@azure/storage-blob';\r\nimport { consoleLogStyle } from '../../shared/varaibles';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\nimport { GuestService } from 'src/app/services/guest.service';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { of, Subject } from 'rxjs';\r\nimport { map, switchMap, debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'fax-homepage',\r\n templateUrl: './fax-homepage.component.html',\r\n styleUrls: ['./fax-homepage.component.scss'],\r\n animations: [\r\n fadeIn,\r\n fadeInFast,\r\n rotateInOut,\r\n slideInLeft,\r\n slideInRight,\r\n listAnimationWrap,\r\n listAnimationItem\r\n ]\r\n})\r\n\r\nexport class FaxHomepageComponent implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n\r\n // isPortable x... \r\n @Input('isSideBar') isSideBar: boolean; // if is component; else is fax home.\r\n\r\n public currentFolderArray: any = [{\r\n urlPath: '/',\r\n fileName: '/',\r\n containerName: null,\r\n blodFileId: null,\r\n isFile: false\r\n }];\r\n\r\n public tooltipDelay: number = 400;\r\n\r\n // 🚧 fax variables \r\n // public channelInfo: any;\r\n // public isOwner: boolean;\r\n // public isCreator: boolean;\r\n // public ownersList: any[];\r\n // public membersList: any[];\r\n // public addOwnerForm: FormGroup;\r\n // public selectedFaxFileSharedWith: any[] = [];\r\n\r\n public isOwner: boolean = false;\r\n\r\n public selectedFaxFolderOwners: any[] = [];\r\n public isFaxesDisplayed: boolean;\r\n\r\n public faxFolderName: string = \"Fax Accounts\"\r\n\r\n public searchUsersList: any[] = [];\r\n\r\n public displayAddOwnerModal: boolean = false;\r\n public isAddingOwner: boolean = false;\r\n public isRemovingOwner: boolean = false;\r\n\r\n public displayShareFaxModal: boolean = false;\r\n public isSharingFax: boolean = false;\r\n public isUnSharingFax: boolean = false;\r\n public fileUnread: boolean = true;\r\n\r\n public faxChannelId: string = null;\r\n public containerName: string;\r\n\r\n public isFilesLoading: boolean;\r\n\r\n public folderList: any[] = []; // set this to fax accounts (main folder)\r\n public filesList: any[] = [];\r\n\r\n public fileListPagination: any = {};\r\n public sentFaxPagination: any = {};\r\n\r\n public isGettingNextPage = false;\r\n\r\n public selectedFile: any = null;\r\n public selectedFileIndex: number = null;\r\n\r\n public renameFileForm: FormGroup;\r\n public displayRenameFileForm = false;\r\n public isRenameSubmitting = false;\r\n\r\n public isDeleting = false;\r\n\r\n public isDownloading = false;\r\n\r\n public favoriting = false;\r\n\r\n // public displaySearchFilesInput = false;\r\n public isSearching = false;\r\n\r\n public userId: string = null;\r\n public userInfo: ChannelUser;\r\n\r\n // \r\n public isDesktop: boolean;\r\n public scrollTopBlock: boolean;\r\n public currentDateTime: any = new Date();\r\n public formattedCurrentDateTime = '';\r\n public setCurrentDateTime: any;\r\n\r\n // public displayFaxSettingsModal: boolean;\r\n // public newFaxAccount: FormGroup;\r\n // public listItemFax: string = \"\";\r\n // public listFax: any = [];\r\n\r\n // Send Fax\r\n public displayReceivedFaxesComponent: boolean = true;\r\n public displaySendFaxModal: boolean;\r\n public displayReSendFaxModal: boolean;\r\n public isSendingFax: boolean;\r\n\r\n // Fax/File Upload Start \r\n public sasToken: TokenCredential;\r\n public blobServiceClient: BlobServiceClient;\r\n public blockBlobClient: BlockBlobClient;\r\n public accountFaxNumber = '';\r\n\r\n public uploadFile: any = {};\r\n public faxFileInfo: any = {};\r\n\r\n public sendFaxForm: any = {};\r\n\r\n public isFileUploading: boolean;\r\n public isDuplicateFile: boolean;\r\n public isFaxSending: boolean;\r\n\r\n public isFaxFormEdited: boolean;\r\n\r\n // should only isDuplicateFile suffice?\r\n public duplicateFileToSameNumber: boolean;\r\n\r\n // for holding the serch string \r\n // when searching \"shared With Me\" \r\n private searchSubject = new Subject();\r\n // when searching users to be owners\r\n private userSearchSubject = new Subject();\r\n\r\n // File Upload End \r\n\r\n constructor(\r\n private _fileStorageService: FileStorageService,\r\n private _apiCallsService: ApiCallsService,\r\n private _toastService: ToastNotificationService,\r\n private _channelService: ChannelService,\r\n private formBuilder: FormBuilder,\r\n private _guestService: GuestService,\r\n\r\n // used for change detector ref, handles the Expression __ has changed after it was checked error with screen check\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"deleteFax\") {\r\n this.deleteFaxForAll();\r\n }\r\n if (data.type === \"resendFax\") {\r\n this.resendFax();\r\n }\r\n if (data.type === \"toggleSendFaxModal\") {\r\n // console.log(\"toggle send fax model called\");\r\n this.toggleSendFaxModal();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n // console.log(\"%c MEDIA is desktop ? \", consoleLogStyle, \" = \", this.isDesktop);\r\n this.createForm();\r\n // this interval is cleared onDestroy \r\n this.setCurrentDateTime = setInterval(() => {\r\n this.currentDateTime = new Date();\r\n this.formattedCurrentDateTime = formatDate(this.currentDateTime, 'EEEE, MMMM d, y h:mm:ss a', 'en-US');\r\n // console.log(\"%c Current time\", consoleLogStyle, this.formattedCurrentDateTime);\r\n }, 1000)\r\n // console.log(\"testing phone number formatting for 876-545-3333: \" + this.formatPhoneNumber(\"18765453333\"));\r\n this._getChannelUser();\r\n // console.log(\"%c is desktop? \", consoleLogStyle, this.isDesktop)\r\n\r\n //creates the search subject for the search debounce\r\n //delays calling the search query until the user paused for the time allotted (400ms here)\r\n this.searchSubject\r\n .pipe(debounceTime(400), distinctUntilChanged())\r\n .subscribe(searchQuery => {\r\n console.log(\"Search Query Passed: \"+ searchQuery); \r\n this._getUsersBySearchQuery(this.selectedFile.sharedFilesWith);\r\n });\r\n\r\n this.userSearchSubject\r\n .pipe(debounceTime(400), distinctUntilChanged())\r\n .subscribe(searchQuery => {\r\n console.log(\"Fax User Search Query Passed: \"+ searchQuery); \r\n this._getUsersBySearchQuery(this.selectedFile.sharedFilesWith);\r\n });\r\n }\r\n\r\n // new \r\n ngAfterViewInit(): void {\r\n if (!!this.isSideBar) {\r\n if (this.isSideBar) {\r\n // console.log(\"%c is side bar true? \", consoleLogStyle, this.isSideBar)\r\n this.isDesktop = false;\r\n } else {\r\n // console.log(\"%c is side bar false? \", consoleLogStyle, this.isSideBar)\r\n this.handleScreenCheck();\r\n }\r\n } else {\r\n // console.log(\"%c is side bar undefined (is ok)? \", consoleLogStyle, this.isSideBar)\r\n this.handleScreenCheck();\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes.isSideBar) {\r\n if (!!this.isSideBar) {\r\n if (this.isSideBar) {\r\n this.isDesktop = false;\r\n } else {\r\n this.handleScreenCheck();\r\n }\r\n } else {\r\n this.handleScreenCheck();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n clearInterval(this.setCurrentDateTime);\r\n // console.log(\"%c On destroy? \", consoleLogStyle)\r\n }\r\n\r\n // screenCheck() {\r\n // let mediaWidth = 1024; // needs to match .scss mq breakpoint \r\n // let mediaQuery = window.matchMedia(`(max-width: ${mediaWidth - 1}px)`);\r\n // if (mediaQuery.matches) {\r\n // return false;\r\n // } else {\r\n // return true;\r\n // }\r\n // }\r\n\r\n triggerFaxShareSearch(event: any) {\r\n const searchQuery = (event.target as HTMLInputElement).value;\r\n this.searchSubject.next(searchQuery);\r\n }\r\n\r\n triggerFaxUserSearch(event: any) {\r\n const searchQuery = (event.target as HTMLInputElement).value;\r\n this.userSearchSubject.next(searchQuery);\r\n }\r\n\r\n handleScreenCheck() {\r\n // this.isDesktop = !this.isSideBar && this.screenCheck();\r\n // 🚧🚧🚧 testing here getting screen check from service ... \r\n // don't think we need the !this.isSideBar check ...\r\n this.isDesktop = this._channelService._isDesktop;\r\n // console.log(\"%c ✨ Window resized fax, is desktop ? \", consoleLogStyle, this.isDesktop);\r\n }\r\n\r\n scrollCheck() {\r\n let scrollBox: any = document.querySelector(\"#fileScrollbox\");\r\n let boxHeight = scrollBox.scrollHeight - scrollBox.offsetHeight;\r\n let boxTop = Math.ceil(scrollBox.scrollTop);\r\n if (!this.scrollTopBlock && boxTop >= boxHeight && this.fileListPagination.nextPageLink) {\r\n // console.log(\"scroll top: \" + boxTop);\r\n // console.log(\"box height: \" + boxHeight);\r\n this.scrollTopBlock = true;\r\n if (this.displayReceivedFaxesComponent) {\r\n this._getFilesPagination();\r\n } else {\r\n // get sent page ...\r\n this._getSentFaxesPagination();\r\n }\r\n }\r\n }\r\n\r\n // called oninit (gets user info) \r\n _getChannelUser() {\r\n this.isFilesLoading = true;\r\n this._apiCallsService.getMyChannelUser()\r\n .subscribe(res => {\r\n // console.log(\"get channel user fax:\", res);\r\n if (res.status === 200) {\r\n // console.log(\"user info fax\", res.body)\r\n this.userInfo = res.body;\r\n if (this.userInfo.isGuest) this._guestService.routeToChannelInvited();\r\n this.userId = this.userInfo.channelUserId;\r\n this.getFaxAccounts();\r\n } else {\r\n console.error(\"error getting channel user\", res.status, res.body)\r\n this.isFilesLoading = false;\r\n }\r\n });\r\n }\r\n\r\n // Send Fax\r\n showSendFaxModal() {\r\n // console.log(\"Fax Modal Opened\");\r\n this.sendFaxForm.reset();\r\n }\r\n\r\n hideSendFaxModal() {\r\n // console.log(\"Fax Modal Closed\");\r\n this.isFaxFormEdited = false;\r\n this.displaySendFaxModal = false;\r\n if (this.isDuplicateFile)\r\n this.isDuplicateFile = false;\r\n }\r\n\r\n toggleSendFaxModal() {\r\n \r\n //Could maybe have a function that checks for \"Shared With Me\" folder in a list of folders\r\n ////cg\r\n if (!this.isOwner && !this.folderList[0] && this.folderList[0].fileName !== \"Shared With Me\") {\r\n this._toastService.info(`Speak with your admin to enable Faxing`);\r\n }\r\n else {\r\n this.displaySendFaxModal = (this.displaySendFaxModal) ? false : true;\r\n (this.displaySendFaxModal) ? this.showSendFaxModal() : this.hideSendFaxModal();\r\n }\r\n }\r\n\r\n submitFaxForm() {\r\n this._uploadFileToStorage();\r\n // console.log(\"submitFax Called\");\r\n // console.log(\"Fax Number:\" + this.sendFaxForm.value.faxNumber);\r\n // this.hideSendFaxModal();\r\n }\r\n\r\n resendFax() {\r\n this._apiCallsService.resendFaxApi(this.selectedFile)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this._toastService.success(`Your fax to: ${this.selectedFile.faxNumber} has been queued to re-send.`);\r\n this.sendFaxForm.reset();\r\n this.displayReSendFaxModal = false;\r\n } else {\r\n if (this.displayReSendFaxModal) { // done to prevent two toasts?\r\n this._toastService.error(\"Re-sending fax unsuccessful. Try Again!\");\r\n this.displayReSendFaxModal = false;\r\n }\r\n }\r\n });\r\n }\r\n\r\n showReceivedFaxes() {\r\n // console.log(\"showing RECIEVED faxes\");\r\n this.displayReceivedFaxesComponent = true;\r\n this._callFileApi(false).subscribe();\r\n }\r\n\r\n showSentFaxes() {\r\n // console.log(\"showing SENT faxes\");\r\n this.displayReceivedFaxesComponent = false;\r\n this._getSentFaxes();\r\n }\r\n\r\n // File Upload Start \r\n // 🎫\r\n /*\r\n only accept { images, documents, audio, video } \r\n & size max { 50mb } \r\n \r\n 50 Megabytes (MB) = 52,428,800 Bytes (B)\r\n \r\n .exe = '4D5A'\r\n .dmg = '78DA'\r\n */\r\n\r\n fileName(e: Event) {\r\n const target = e.target as HTMLInputElement; // ang12 ts fix\r\n const files = target.files as FileList; // ang12 ts fix\r\n // this.displayCreateFolderForm = false;\r\n this.isFileUploading = true;\r\n this.isFaxFormEdited = true;\r\n // this.uploadStatusChange.emit(this.isFileUploading); //comment back later when in new component\r\n this.uploadFile = files[0];\r\n let fileReader = new FileReader();\r\n fileReader.onloadend = (e: any) => {\r\n let arr = (new Uint8Array(e.target.result)).subarray(0, 2);\r\n let size = e.target.result;\r\n // console.log(\"file byte length / file size :::\", size.byteLength)\r\n // console.log(\"buffer array :::\", arr)\r\n let hex = \"\";\r\n for (let i = 0; i < arr.length; i++) {\r\n hex += arr[i].toString(16);\r\n }\r\n // console.log(\"file hex :::\", hex)\r\n // Check the file signature against known types\r\n let exe = ['4D5A', '78DA'];\r\n if (exe.includes(hex.toUpperCase())) {\r\n // console.log(\"is exe/dmg :::\", hex)\r\n this.isFileUploading = false;\r\n this._toastService.error(\"Can not upload Executable file.\")\r\n return;\r\n } else if (size.byteLength > 52428800) {\r\n // console.log(\"size > 50mb. :::\", hex)\r\n this.isFileUploading = false;\r\n this._toastService.error(\"File size too large, file must be less than 50mb.\")\r\n return;\r\n } else {\r\n // console.log(\"not exe | not > 50mb, ok to upload\")\r\n }\r\n };\r\n fileReader.readAsArrayBuffer(this.uploadFile);\r\n // console.log(\"file size?\", this.uploadFile.size)\r\n }\r\n\r\n _uploadFileToStorage() {\r\n this.isFaxSending = true;\r\n let fileInfo: any;\r\n fileInfo = {\r\n \"containerName\": this.folderList[0].containerName,\r\n \"path\": \"/outbox/\" + this.sendFaxForm.value.faxNumber + \"/\" + this.uploadFile.name,\r\n \"fileName\": this.uploadFile.name,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"size\": this.uploadFile.size,\r\n \"channelId\": this.folderList[0].chatRoomId,\r\n \"contentType\": \"faxoutbox\"\r\n };\r\n this._fileStorageService.fileUpload(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"%c Success for upload: \", consoleLogStyle, res.status);\r\n this._uploadFileToStorage2(fileInfo);\r\n this.hideSendFaxModal();\r\n } else if (res.status === 400) {\r\n // console.log(\"Error with upload NAME ?\", res);\r\n this._toastService.error(\"Only file names with 'a-z 0-9 (-._)', no special characters are allowed, file was not uploaded.\");\r\n this.isFileUploading = false;\r\n } else if (res.status === 409) {\r\n // console.log(\"%c File already exists! \", consoleLogStyle, res.status);\r\n this.isFileUploading = false;\r\n // const allFiles = Array.from(document.getElementsByClassName('file-item') as HTMLCollectionOf);\r\n // console.log(\"%c All files \", consoleLogStyle, allFiles);\r\n // allFiles.forEach(i => i.style.display = 'none');\r\n this.isDuplicateFile = true;\r\n } else {\r\n // console.log(\"error with file upload:\", res.status);\r\n this._toastService.error(\"There was an error, file was not uploaded.\");\r\n this.isFileUploading = false;\r\n this.hideSendFaxModal();\r\n }\r\n this.isFaxSending = false;\r\n });\r\n }\r\n\r\n _uploadFileToStorage2(fileInfo: any) {\r\n this._fileStorageService.fileUpload2(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n let file: any = res.body;\r\n let url = file.uploadUrl;\r\n let indexOfQueryStart = url.indexOf(\"?\");\r\n let baseUrl = url.substring(0, indexOfQueryStart) + \"/\" + this.trimStart(\"/\", file.path);\r\n this.sasToken = url.substring(indexOfQueryStart);\r\n // console.log(\"%c File Uploaded: \", consoleLogStyle ,baseUrl);\r\n this.blockBlobClient = new BlockBlobClient(baseUrl + this.sasToken);\r\n this.uploadToBlobStorage(file.blobFileId);\r\n this.hideSendFaxModal();\r\n // if (!this.displayYourFilesComponent) {\r\n // this._channelService.sharedFileUploadComplete(this.router.url, fileInfo.fileName, this.channelId);\r\n // }\r\n } else {\r\n // console.log(\"Error with upload ?\", res);\r\n this._toastService.error(\"There was an error, file was not uploaded.\");\r\n this.isFileUploading = false;\r\n this.hideSendFaxModal();\r\n }\r\n });\r\n }\r\n\r\n handleDuplicateFile(canReplace: boolean) {\r\n // console.log(\"%c Duplicate file handle \", consoleLogStyle);\r\n if (canReplace) {\r\n let fileInfo: any;\r\n fileInfo = {\r\n \"containerName\": this.filesList[0].containerName,\r\n \"path\": \"/outbox/\" + this.sendFaxForm.value.faxNumber + \"/\" + this.uploadFile.name,\r\n \"fileName\": this.uploadFile.name,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"size\": this.uploadFile.size,\r\n \"channelId\": this.faxChannelId,\r\n \"contentType\": \"faxoutbox\"\r\n }\r\n // console.log(\"%c Replace file authorized \", consoleLogStyle);\r\n this.isDuplicateFile = false;\r\n // this._toastService.warn(`${fileInfo.fileName} already exists, overwriting existing file...`);\r\n this.isFileUploading = true;\r\n this.duplicateFileToSameNumber = true;\r\n this._uploadFileToStorage2(fileInfo);\r\n } else if (!canReplace) {\r\n // console.log(\"%c Replace file IS NOT authorized \", consoleLogStyle);\r\n this.isDuplicateFile = false;\r\n // this._callFileApi();\r\n }\r\n }\r\n\r\n\r\n _sendFax(fileId: string) {\r\n let faxInfo = {\r\n \"chatUserId\": this.userId,\r\n \"userFaxAccountId\": this.folderList[0].containerName,\r\n \"faxNumber\": this.sendFaxForm.value.faxNumber,\r\n \"blobFileId\": fileId\r\n }\r\n this._apiCallsService.postFaxApi(faxInfo)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n //call get faxes api\r\n this._toastService.success(`Your fax to: ${this.sendFaxForm.value.faxNumber} has been queued to send.`);\r\n this.sendFaxForm.reset();\r\n }\r\n })\r\n }\r\n\r\n trimStart(character: any, string: any) {\r\n var startIndex = 0;\r\n while (string[startIndex] === character) {\r\n startIndex++;\r\n }\r\n return string.substring(startIndex);\r\n }\r\n\r\n async uploadToBlobStorage(fileId: string) {\r\n const content = this.uploadFile;\r\n // const blobName = this.uploadFile.name;\r\n // console.log(\"upload to blob\",this.blockBlobClient);\r\n let uploadBlobResponse;\r\n try {\r\n uploadBlobResponse = await this.blockBlobClient.upload(content, content.size);\r\n // this._toastService.success(`${this.uploadFile.name} has uploaded.`);\r\n // this._callFileApi();\r\n if (this.duplicateFileToSameNumber == true) {\r\n // console.log(\"Fax Already Exists, Resending\");\r\n this.duplicateFileToSameNumber = false;\r\n\r\n this._sendFax(fileId);\r\n }\r\n else {\r\n this._sendFax(fileId);\r\n }\r\n\r\n } catch (err) {\r\n // this._deleteFileFromStorageOnly(fileId);\r\n // console.error(\"error with upload to blob\", err);\r\n this._toastService.error(\"There was an error, file was not uploaded.\");\r\n } finally {\r\n this.isFileUploading = false;\r\n }\r\n }\r\n //File Upload End \r\n\r\n createForm() {\r\n this.sendFaxForm = this.formBuilder.group({\r\n fileToFax: ['', [Validators.required]],\r\n faxNumber: ['', [Validators.required]],\r\n });\r\n this.renameFileForm = this.formBuilder.group({\r\n fName: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n faxOwnersCheck(ownerCheck: any) {\r\n if (ownerCheck) {\r\n this.isOwner = true;\r\n } else {\r\n this.isOwner = false;\r\n }\r\n // console.log(\"%c is owner? \", consoleLogStyle, this.isOwner)\r\n }\r\n\r\n resetSelectedFile() {\r\n this.selectedFile = null;\r\n this.selectedFileIndex = null;\r\n }\r\n\r\n // 📁 gets fax folders \r\n getFaxAccounts() {\r\n this.resetSelectedFile();\r\n this.isFaxesDisplayed = false;\r\n this._apiCallsService.getUserFaxAccounts(this.userId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n //console.log(\"%c 📠 fax accounts: \", consoleLogStyle, res.body) // returns chatRoomId to \r\n this.filesList = res.body;\r\n // separate variable due to fileslist being replaced by files in folder if folder selected\r\n // Only grab once at init\r\n if (this.folderList.length < 1) {\r\n this.folderList = res.body;\r\n }\r\n this.isFilesLoading = false;\r\n // console.log(\"selected file idx ???\", this.selectedFileIndex)\r\n // this.selectedFile = this.filesList[this.selectedFileIndex];\r\n if (this.filesList[0]) {\r\n this.faxOwnersCheck(this.filesList[0].chatRoomChatUsers); // ❌ what if more than one fax account? ... \r\n //console.log(\"Fax users: \"+ JSON.stringify(this.filesList[0].chatRoomChatUsers));\r\n }\r\n } else {\r\n console.error(\"error getting fax accounts:\", res.status, res.body)\r\n this.isFilesLoading = false;\r\n }\r\n });\r\n }\r\n\r\n\r\n // 🚧 add/remove fax folder owner\r\n toggleAddOwnerModal() {\r\n this.displayAddOwnerModal = (this.displayAddOwnerModal) ? false : true;\r\n this.clearSearch();\r\n }\r\n\r\n // GET ALL USERS HERE 🎁 \r\n _getUsersBySearchQuery(currentList: any[]) { // CALLED (keyup) of searchbar input\r\n console.log(\"Fax user search query called\");\r\n const userSearchBar = document.getElementById('user-search');\r\n let searchString = userSearchBar.value.replace(/\\s/g, '');\r\n if (searchString.length < 1) {\r\n this.searchUsersList = [];\r\n } else {\r\n this._apiCallsService.getChannelUsersByTenantAndSearchQuery(this.userInfo.tenant, searchString)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let searchList = data.body;\r\n let newList = [];\r\n let compareList = currentList.concat(this.selectedFaxFolderOwners);\r\n // console.log(\"(search)✔ current list passed:\", currentList, \"this saved owners list:\", this.selectedFaxFolderOwners)\r\n // make sure not already: owner | shared | you, in search list \r\n searchList.forEach((searchUser, index) => {\r\n if (this.userId !== searchUser.channelUserId) {\r\n if (!compareList.some(owner => searchUser.channelUserId === owner.chatUserKeyNavigation.channelUserId)) {\r\n newList.push(searchList[index]);\r\n }\r\n }\r\n });\r\n this.searchUsersList = newList;\r\n // console.log(\"search res:\", this.searchUsersList)\r\n // this.searchUsersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n } else {\r\n console.error(\"error getting users by search\", JSON.stringify(data));\r\n }\r\n });\r\n }\r\n }\r\n\r\n clearSearch() {\r\n const userSearchBar = document.getElementById('user-search');\r\n if (userSearchBar) {\r\n userSearchBar.value = '';\r\n }\r\n this.searchUsersList = [];\r\n }\r\n\r\n searchCheckLength() {\r\n const userSearchBar = document.getElementById('user-search');\r\n if (userSearchBar) {\r\n if (userSearchBar.value.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n preventFileDblClick(e: Event) {\r\n e.stopPropagation();\r\n }\r\n\r\n addOwner(userId: string, username: string) {\r\n this.clearSearch();\r\n // console.log(\"adding owner:\", userId, username)\r\n this.isAddingOwner = true; // TODO: add loading spinner to modal <---<<<|)\r\n let owner = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.selectedFile.chatRoomId\r\n };\r\n this._apiCallsService.postChannelOwner(owner)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Owner Added\");\r\n this.isAddingOwner = false;\r\n this._toastService.success(`${username} added as an owner.`);\r\n this.getFaxAccounts();\r\n } else if (res.status === 409) {\r\n // console.log(\"Owner Already Exists\");\r\n this.isAddingOwner = false;\r\n this._toastService.error(`${username} is already an owner.`);\r\n } else {\r\n // console.log(\"error adding owner to fax:\", res);\r\n this.isAddingOwner = false;\r\n this._toastService.error(`There was an error adding ${username} as an owner.`);\r\n }\r\n });\r\n }\r\n\r\n removeOwner(userId: string, username: string) {\r\n this.clearSearch();\r\n // console.log(\"removing owner:\", userId, username)\r\n this.isRemovingOwner = true; // TODO: add loading spinner to modal <---<<<|)\r\n let owner = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.selectedFile.chatRoomId\r\n };\r\n this._apiCallsService.deleteChannelOwner(owner)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"Owner Removed\");\r\n this.isRemovingOwner = false;\r\n this._toastService.success(`${username} has been removed as owner.`);\r\n this.getFaxAccounts();\r\n } else if (res.status === 404) {\r\n // console.log(\"Owner does not exist\");\r\n this.isRemovingOwner = false;\r\n this._toastService.error(`${username} has already been removed has an owner.`);\r\n } else {\r\n // console.log(\"error removing owner:\", res);\r\n this.isRemovingOwner = false;\r\n this._toastService.error(`There was an error removing ${username} as an owner.`);\r\n }\r\n });\r\n }\r\n // END add/remove fax folder owner\r\n\r\n // 🚧 share fax start\r\n toggleShareFaxModal() {\r\n this.containerName = this.filesList[0].containerName;\r\n this.displayShareFaxModal = (this.displayShareFaxModal) ? false : true;\r\n this.clearSearch();\r\n // console.log(this.selectedFile)\r\n }\r\n\r\n shareFax(userId: string, username: string) {\r\n this.clearSearch();\r\n this.selectedFileIndex = 0;\r\n let fileInfo = {\r\n \"chatUserId\": userId, // user to share with\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"ownerChatUserId\": this.userId\r\n };\r\n this._fileStorageService.shareFile(fileInfo).pipe(\r\n switchMap((res: any) => {\r\n if (res.status === 200) {\r\n // console.log(\"fax share success\", fileInfo)\r\n return this._callFileApi().pipe(\r\n map(_ => {\r\n this._toastService.success(`Fax shared with ${username}.`);\r\n this.selectedFile = this.filesList.find(x => x.blobFileId == fileInfo.blobFileId)\r\n })\r\n )\r\n } else {\r\n // console.log(\"error in fax sharing\", res)\r\n //this.isSharingFax = false;\r\n this._toastService.error(`There was an error sharing this fax with ${username}`);\r\n return of(res);\r\n }\r\n }\r\n ),\r\n ).subscribe();\r\n }\r\n\r\n unShareFax(userId: string, username: string) {\r\n this.clearSearch();\r\n this.isUnSharingFax = true;\r\n let fileInfo = {\r\n \"chatUserId\": userId, // user to share with\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"ownerChatUserId\": this.userId\r\n };\r\n this._fileStorageService.unShareSelf(fileInfo).pipe(\r\n switchMap(res => {\r\n if (res.status === 200) {\r\n // console.log(\"fax un-share success\", fileInfo)\r\n return this._callFileApi().pipe(map(_ => {\r\n this.isUnSharingFax = false;\r\n this._toastService.success(`${username} has been removed from this fax.`)\r\n this.selectedFile = this.filesList.find(x => x.blobFileId == fileInfo.blobFileId)\r\n }))\r\n\r\n } else {\r\n // console.log(\"error in fax un-sharing\", res)\r\n this.isUnSharingFax = false;\r\n this._toastService.error(`There was an error removing ${username} from this fax.`);\r\n return of(res);//what\r\n }\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n unShareFaxWithSelf() {\r\n // console.log('un-sharing Fax with self:')\r\n this.isUnSharingFax = true;\r\n let fileInfo = {\r\n \"chatUserId\": this.userId, // user to share with\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n };\r\n this._fileStorageService.unShareSelf(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"fax un-share success\", fileInfo)\r\n this.isUnSharingFax = false;\r\n this._toastService.info(`You have been removed from this fax.`)\r\n this._callFileApi(true); // if last file, \r\n } else {\r\n console.error(\"error in fax un-sharing\", res)\r\n this.isUnSharingFax = false;\r\n }\r\n });\r\n }\r\n // END share fax\r\n\r\n //Start Favorites\r\n addFavorite(fileId: string, index: number, e: Event) {\r\n e.stopPropagation();\r\n let fileInfo = {\r\n \"chatUserId\": this.userId, // user to share with\r\n \"blobFileId\": fileId,\r\n };\r\n this._fileStorageService.fileAddToFavorite(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // this._callFileApi(false);\r\n this.filesList[index].favoriteBlobFiles.push({ isFavorite: true })\r\n } else {\r\n this._toastService.error(`Could not add file to favorites`);\r\n // console.error(\"Add favorite error\", res);\r\n }\r\n });\r\n // console.log(this.filesList[index]);\r\n }\r\n\r\n removeFavorite(fileId: string, index: number, e: Event) {\r\n e.stopPropagation();\r\n this.favoriting = true;\r\n let fileInfo = {\r\n \"chatUserId\": this.userId, // user to share with\r\n \"blobFileId\": fileId,\r\n };\r\n this._fileStorageService.fileRemoveFromFavorite(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // this._callFileApi(false);\r\n this.filesList[index].favoriteBlobFiles = [];\r\n this.favoriting = false;\r\n } else {\r\n this._toastService.error(`Could not remove file from favorites`);\r\n this.favoriting = false;\r\n // console.log(\"Remove favorite error\", res);\r\n }\r\n });\r\n // console.log(this.filesList[index]);\r\n }\r\n //End Favorites\r\n\r\n goBack() {\r\n this.currentFolderArray.pop();\r\n this.getFaxAccounts();\r\n // this.selectedFile = null;\r\n // this.selectedFileIndex = null;\r\n this.resetSelectedFile();\r\n this.faxChannelId = null;\r\n this.displayReceivedFaxesComponent = true;\r\n this.selectedFaxFolderOwners = [];\r\n // console.log(\"back-clicked, this.currentFolderArray = \", this.currentFolderArray);\r\n }\r\n\r\n // 📃 gets faxes ... \r\n _callFileApi(isUnshare?: boolean) {\r\n this.resetSelectedFile();\r\n this.isFaxesDisplayed = true;\r\n let chatUserId = null;\r\n // console.log(\"FileAPI Selected File: \" + this.containerName);\r\n if (this.selectedFile) {\r\n if (this.selectedFile.fileName === \"Shared With Me\" || isUnshare) {\r\n // console.log(\"isUnshare??????\", isUnshare)\r\n this.containerName = \"sharedfolder\";\r\n chatUserId = this.userId;\r\n } else {\r\n chatUserId = null;\r\n }\r\n }\r\n let folderInfo: any = {\r\n \"containerName\": this.containerName,\r\n \"urlPath\": \"\",\r\n \"pageSize\": 20,\r\n \"orderBy\": \"LastActivity desc, Created desc\",\r\n \"isFile\": '',\r\n \"chatUserId\": chatUserId\r\n };\r\n\r\n return this._fileStorageService.getFiles(folderInfo).pipe(map(data => {\r\n if (data.status === 200) {\r\n // console.log(\"%c 📃 fax list: \", consoleLogStyle, data.body);\r\n this.filesList = data.body;\r\n this.fileListPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n\r\n this.scrollTopBlock = false;\r\n this.faxOwnersCheck(this.filesList[0].sharedFilesWith);\r\n } else {\r\n // console.error(\"Error getting files ?\", data);\r\n this._toastService.error(\"There was an error in getting files.\");\r\n\r\n }\r\n return data;\r\n }))\r\n }\r\n\r\n _getFilesPagination() {\r\n this.isGettingNextPage = true;\r\n // console.log('%c Show getting more files = ', consoleLogStyle, this.isGettingNextPage, this.currentDateTime);\r\n let folderInfo: any = {\r\n \"containerName\": this.containerName,\r\n \"parentId\": null,\r\n \"orderBy\": \"LastActivity desc, Created desc\",\r\n \"pageNumber\": this.fileListPagination.currentPage + 1,\r\n \"pageSize\": 20\r\n };\r\n this._fileStorageService.getFiles(folderInfo)\r\n .subscribe(data => {\r\n // console.log(\"folder info for pageination\", folderInfo)\r\n if (data.status === 200) {\r\n let list: any = data.body;\r\n this.filesList = this.filesList.concat(list);\r\n // console.log(\"filesList from pagination:\", this.filesList);\r\n this.fileListPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n this.scrollTopBlock = false;\r\n setTimeout(() => {\r\n this.isGettingNextPage = false;\r\n // console.log('%c Show getting more files = ', consoleLogStyle, this.isGettingNextPage, this.currentDateTime);\r\n });\r\n } else {\r\n // console.error(\"Error in pagination ?\", data);\r\n this._toastService.error(\"There was an error in getting more files.\");\r\n this.isGettingNextPage = false;\r\n }\r\n });\r\n }\r\n\r\n _getSentFaxes() {\r\n this.resetSelectedFile();\r\n this.isFaxesDisplayed = true;\r\n this.isFilesLoading = true;\r\n // if (this.selectedFile) {\r\n // this.containerName = this.selectedFile.containerName;\r\n // }\r\n let folderInfo: any = {\r\n \"containerName\": this.containerName,\r\n \"urlPath\": \"\",\r\n \"pageSize\": 15,\r\n \"orderBy\": \"\",\r\n \"isFile\": \"\",\r\n \"chatUserId\": this.userId\r\n };\r\n this.filesList = [];\r\n this._apiCallsService.getFaxApi(folderInfo.containerName)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // console.log(\"%c 📃 fax list: \", consoleLogStyle, data.body);\r\n this.filesList = data.body;\r\n this.isFilesLoading = false;\r\n // console.log(\"selected file idx ???\", this.selectedFileIndex)\r\n // this.selectedFile = this.filesList[this.selectedFileIndex];\r\n this.sentFaxPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n // console.log(\"this.sentFaxPagination: \", this.sentFaxPagination);\r\n this.scrollTopBlock = false;\r\n } else {\r\n // console.error(\"Error getting files ?\", data);\r\n this._toastService.error(\"There was an error in getting files.\");\r\n this.isFilesLoading = false;\r\n }\r\n });\r\n }\r\n\r\n _getSentFaxesPagination() {\r\n this.isGettingNextPage = true;\r\n // console.log('%c Show getting more files = ', consoleLogStyle, this.isGettingNextPage, this.currentDateTime);\r\n let folderInfo: any = {\r\n \"containerName\": this.containerName,\r\n \"parentId\": null,\r\n \"orderBy\": \"\",\r\n \"pageNumber\": this.sentFaxPagination.currentPage + 1,\r\n \"pageSize\": 20\r\n };\r\n // this._apiCallsService.getFaxApi(folderInfo.containerName)\r\n if (this.sentFaxPagination.nextPageLink != null) {\r\n this._apiCallsService.getGenericForPagination(this.sentFaxPagination.nextPageLink)\r\n .subscribe(data => {\r\n // console.log(\"folder info for pageination\", folderInfo)\r\n if (data.status === 200) {\r\n let list: any = data.body;\r\n this.filesList = this.filesList.concat(list);\r\n // console.log(\"filesList from pagination:\", this.filesList);\r\n this.sentFaxPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n this.scrollTopBlock = false;\r\n setTimeout(() => {\r\n this.isGettingNextPage = false;\r\n // console.log('%c Show getting more files = ', consoleLogStyle, this.isGettingNextPage, this.currentDateTime);\r\n });\r\n } else {\r\n // console.error(\"Error in pagination ?\", data);\r\n this._toastService.error(\"There was an error in getting more files.\");\r\n this.isGettingNextPage = false;\r\n }\r\n });\r\n }\r\n else {\r\n this.isGettingNextPage = false;\r\n // console.log(\"No additional fax pages\");\r\n }\r\n }\r\n\r\n\r\n // 🚧 DO NOT REMOVE YET, MAY NEED...\r\n // search start\r\n // showSearchFilesInput() {\r\n // // console.log(\"search bar open ?\", this.displaySearchFilesInput);\r\n // if(this.displaySearchFilesInput && !this.isSearching) {\r\n // this.displaySearchFilesInput = false;\r\n // if (this.isSearching && this.filesList.length === 0) {\r\n // this.isSearching = false;\r\n // this._callFileApi();\r\n // }\r\n // } else {\r\n // this.displaySearchFilesInput = true;\r\n // // this.selectedFile = null;\r\n // this.selectedFileIndex = null;\r\n // }\r\n // // console.log(\"search bar open ?\", this.displaySearchFilesInput);\r\n // }\r\n\r\n // searchFiles(e: any) {\r\n // let expression = /^\\S*$/;\r\n // let regex = new RegExp(expression);\r\n\r\n // if (e.target.value.match(regex)) {\r\n // if (e.target.value && e.target.value !== \"\") {\r\n // this._callFileApi(e.target.value);\r\n // this.isSearching = true;\r\n // // console.log(\"active file search for: orig target ?\", e.originalTarget.value);\r\n // // console.log(\"active file search for: TARGET ?\", e.target.value); - same as above \r\n\r\n // } else {\r\n // this._callFileApi();\r\n // this.isSearching = false;\r\n // }\r\n // }\r\n // }\r\n\r\n // clearSearch() {\r\n // const searchInput: any = document.getElementById('searchInput');\r\n // // const searchClose: any = document.getElementById('searchClose');\r\n // if (this.isSearching || searchInput) {\r\n // searchInput.value = \"\";\r\n // this.isSearching = false;\r\n // this._callFileApi();\r\n // }\r\n // }\r\n // search end\r\n\r\n // For formating current fax phone number as a number\r\n\r\n formatPhoneNumber(phoneNumberString) {\r\n var cleaned = ('' + phoneNumberString).replace(/\\D/g, '');\r\n var match = cleaned.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return [match[2], '-', match[3], '-', match[4]].join('');\r\n }\r\n return null;\r\n }\r\n\r\n // select file & info \r\n selectFile(i: number) {\r\n // console.log(\"%c file selected \", i)\r\n // console.log(\"%c item already selected! \", consoleLogStyle); // <- if IS selected line 345 returns;\r\n if (!this.isDownloading && !this.isDeleting) {\r\n if (this.selectedFile && this.selectedFile === this.filesList[i]) return;\r\n // to close mobile infos on select \r\n const allOtherInfos = Array.from(document.getElementsByClassName('file-info-display') as HTMLCollectionOf);\r\n // console.log(\"%c All other infos \", consoleLogStyle, allOtherInfos);\r\n allOtherInfos.forEach(info => info.style.display = 'none');\r\n this.selectedFile = this.filesList[i];\r\n this.selectedFileIndex = i;\r\n // console.log(\"%c Item selected: \", consoleLogStyle, this.filesList[i], i);\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n // double click item - \r\n openFolder(isFile: boolean, ownersList: any[]) {\r\n if (!this.isDownloading && !this.isDeleting) {\r\n if (isFile) {\r\n this.downloadFile();\r\n // console.log(\"file downloaded\");\r\n } else {\r\n this.faxChannelId = this.selectedFile.chatRoomId;\r\n this.selectedFaxFolderOwners = ownersList;\r\n this.accountFaxNumber = this.selectedFile.faxNumber;\r\n this.containerName = this.selectedFile.containerName;\r\n this.currentFolderArray.push(this.selectedFile);\r\n // this._getFilesPagination();\r\n if (this.displayReceivedFaxesComponent) {\r\n this._callFileApi().subscribe();\r\n }\r\n else {\r\n this._getSentFaxes();\r\n }\r\n // this.selectedFile = null;\r\n // this.selectedFileIndex = null;\r\n this.resetSelectedFile();\r\n }\r\n } else {\r\n return;\r\n }\r\n // console.log(\"folder open\");\r\n }\r\n\r\n showReSendFaxConfirmation() {\r\n // this.displayReSendFaxModal = true;\r\n this._toastService.continue(`Are you sure you want to send this same fax to ${this.formatPhoneNumber(this.selectedFile.faxNumber)}?`, \"resendFax\");\r\n }\r\n\r\n closeReSendFaxConfirmation() {\r\n // this.displayReSendFaxModal = false;\r\n }\r\n\r\n // mobile only display file info - i = File index & also id of info element \r\n showFileInfo(e: Event, i: number) {\r\n e.stopPropagation();\r\n // console.log(\"show info\", i, e);\r\n // to close other infos \r\n const allOtherInfos = Array.from(document.getElementsByClassName('file-info-display') as HTMLCollectionOf);\r\n // console.log(\"%c All other infos \", consoleLogStyle, allOtherInfos);\r\n allOtherInfos.forEach(info => info.style.display = 'none');\r\n // open this 'i' info w/ transition \r\n const info = document.getElementById(`fax-info-${i}`);\r\n info.style.display = \"flex\";\r\n info.animate([\r\n { opacity: 0, transform: 'scale(0)' },\r\n { opacity: 1, transform: 'scale(1)' }\r\n ], {\r\n duration: 200\r\n });\r\n // console.log(\"file-item\", i);\r\n }\r\n\r\n // to close info when clicked itself \r\n closeFileInfo(i: number, e: Event) {\r\n e.stopPropagation();\r\n // console.log(\"mouse down\", i, e);\r\n const info = document.getElementById(`fax-info-${i}`);\r\n info.style.display = \"none\";\r\n }\r\n\r\n // download file start \r\n downloadFile(e?: Event) {\r\n if (e) e.stopPropagation();\r\n this.isDownloading = true;\r\n let fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": \"fax\"\r\n }\r\n this._fileStorageService.fileDownload(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.createDownloadElement(res.body);\r\n } else {\r\n // console.log(\"Error in download ?\", res);\r\n this._toastService.error(`There was an error in downloading ${this.selectedFile.fileName}.`);\r\n this.isDownloading = false;\r\n }\r\n });\r\n // console.log(\"download file clicked:\", fileInfo);\r\n }\r\n\r\n createDownloadElement(link: any) {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', link);\r\n element.setAttribute('download', link);\r\n element.setAttribute('target', '_blank');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n this.isDownloading = false;\r\n }\r\n // download file end \r\n\r\n // rename start \r\n autoFocusRenameInput() {\r\n setTimeout(() => {\r\n const targetInput: any = document.querySelector('#renameInput');\r\n if (targetInput) {\r\n targetInput.focus();\r\n }\r\n });\r\n }\r\n\r\n showRenameFileInput(e?: Event) {\r\n if (e) e.stopPropagation();\r\n // this.displayRenameFileForm = (this.displayRenameFileForm) ? false : true;\r\n if (this.displayRenameFileForm) {\r\n this.displayRenameFileForm = false;\r\n this.renameFileForm.reset();\r\n } else {\r\n this.displayRenameFileForm = true;\r\n this.renameFileForm.reset();\r\n this.autoFocusRenameInput();\r\n }\r\n }\r\n\r\n // could rename fax on fron-end so to not get files again ... \r\n renameFile() {\r\n this.isRenameSubmitting = true;\r\n let fileInfo: any;\r\n fileInfo = {\r\n \"fromPath\": this.selectedFile.urlPath,\r\n \"toPath\": \"/\" + this.renameFileForm.value.fName + \".\" + this.selectedFile.fileName.substring(this.selectedFile.fileName.lastIndexOf(\".\") + 1, this.selectedFile.fileName.length),\r\n \"newFileName\": this.renameFileForm.value.fName + \".\" + this.selectedFile.fileName.substring(this.selectedFile.fileName.lastIndexOf(\".\") + 1, this.selectedFile.fileName.length),\r\n \"autoRename\": false,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.faxChannelId\r\n };\r\n if (this.renameFileForm.value.fName !== \"\" && this.renameFileForm.value.fName !== null && this.renameFileForm.value.fName !== this.selectedFile.fileName.substring(0, this.selectedFile.fileName.lastIndexOf(\".\"))) {\r\n this._fileStorageService.renameFile(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"resolved rename folder?:\", res)\r\n this._callFileApi().subscribe();\r\n this.selectedFile = null;\r\n this.isRenameSubmitting = false;\r\n this.renameFileForm.reset();\r\n this.displayRenameFileForm = false;\r\n } else if (res.status === 400) {\r\n // console.log(\"%c Name Error \", consoleLogStyle);\r\n this._toastService.error(\"File name must contain letters and numbers.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else if (res.status === 409) {\r\n // console.log(\"%c Duplicate Error: \", consoleLogStyle);\r\n this._toastService.error(`${fileInfo.newFileName.slice(0, -1)} already exists.`);\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else {\r\n // console.log(\"something went wrong with rename\", res.status.toString());\r\n this._toastService.error(\"Something went wrong with rename.\");\r\n this.isRenameSubmitting = false;\r\n this.displayRenameFileForm = false;\r\n }\r\n });\r\n } else {\r\n // console.log(\"%c Must edit name to submit! \", consoleLogStyle)\r\n this._toastService.error(\"Must edit file name to submit.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n }\r\n }\r\n // rename end\r\n\r\n // delete file start \r\n _deleteFileFromAll(e?: Event) {\r\n if (e) e.stopPropagation();\r\n if (this.selectedFile.sharedFilesWith && this.selectedFile.sharedFilesWith.length > 0) {\r\n this._toastService.continue(\"Deleting this fax will also delete it for anyone it has been shared with, do you still want to delete?\", \"deleteFax\");\r\n // if(confirm('Deleting this fax will also delete it for anyone it has been shared with, do you still want to delete?')) {\r\n // this.deleteFaxForAll();\r\n // } else {\r\n // return;\r\n // }\r\n } else {\r\n this._toastService.continue(\"You are about to delete this fax, would you like to continue?\", \"deleteFax\");\r\n // this.deleteFaxForAll();\r\n }\r\n }\r\n\r\n // could remove fax on fron-end so to not get files again ... \r\n deleteFaxForAll() {\r\n this.isDeleting = true;\r\n let fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId\r\n }\r\n this._fileStorageService.fileDelete(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n if (!this.displayReceivedFaxesComponent) {\r\n this._deleteSentFaxRecord();\r\n } else {\r\n this._callFileApi().subscribe();\r\n }\r\n this.isDeleting = false;\r\n this._toastService.success(`${this.selectedFile.fileName} has been deleted.`);\r\n // this.selectedFileIndex = null;\r\n // this.selectedFile = null;\r\n this.resetSelectedFile();\r\n } else {\r\n // console.log(\"Error in delete ?\", res);\r\n this._toastService.error(`There was an error in deleting ${this.selectedFile.fileName}.`);\r\n this.isDeleting = false;\r\n }\r\n });\r\n }\r\n\r\n // to close all modals | add switch if needed to close milti ... \r\n clickOffFaxModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n // console.log(\"%c e.t, e.srcel, e.curtar \", consoleLogStyle, event.target, event.srcElement, event.currentTarget)\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n // console.log(\"%c tar.id? ,val? \", consoleLogStyle, idAttr, value)\r\n }\r\n switch (value) {\r\n case 'add-owner-modal': {\r\n this.toggleAddOwnerModal();\r\n break;\r\n }\r\n case 'share-fax-modal': {\r\n this.toggleShareFaxModal();\r\n break;\r\n }\r\n case 'send-fax-modal': {\r\n if (this.isFaxFormEdited) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"toggleSendFaxModal\");\r\n } else {\r\n this.toggleSendFaxModal();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // might want to have this be the main close function for the modal\r\n closeSendFaxModal() {\r\n if (this.isFaxFormEdited) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"toggleSendFaxModal\");\r\n } else {\r\n this.hideSendFaxModal();\r\n }\r\n }\r\n\r\n // could remove fax on fron-end so to not get files again ... \r\n _deleteSentFaxRecord() {\r\n this._apiCallsService.deleteSentFax(this.selectedFile.faxId)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this._getSentFaxes();\r\n } else {\r\n this._toastService.error(`There was an error in deleting ${this.selectedFile.fileName}.`);\r\n this.isDeleting = false;\r\n }\r\n });\r\n }\r\n\r\n\r\n // showFaxSettings() {\r\n // // console.log(\"showing fax seetings\");\r\n // this.displayFaxSettingsModal = true;\r\n // }\r\n\r\n // closeFaxSettingsModal() {\r\n // // console.log(\"showing fax seetings\");\r\n // this.displayFaxSettingsModal = true;\r\n // }\r\n\r\n // createFaxAccountForm() {\r\n // this.newFaxAccount = this.fb.group({\r\n // faxProviderId: \"\",\r\n // faxProviderPassword: \"\",\r\n // faxNumber: \"\",\r\n // faxAccountName: \"\"\r\n // });\r\n // }\r\n\r\n // get newFaxControls() { return this.newFaxAccount.controls; }\r\n\r\n // submitNewFaxAccountForm() {\r\n // this.createChannelFax();\r\n // }\r\n\r\n // createChannelFax() {\r\n // let newChannel = {\r\n // \"teamProjectId\": Constants.faxProjId,\r\n // \"channelUserId\": this.userId,\r\n // \"name\": this.newFaxControls.faxAccountName.value,\r\n // \"type\": \"fax\",\r\n // \"videoType\": \"jitsi\",\r\n // \"topic\": null,\r\n // \"inviteCode\": null,\r\n // \"welcome\": null,\r\n // \"deleteRule\": 0,\r\n // \"deleteInterval\": 0,\r\n // \"scope\": \"Owner\",\r\n // \"private\": true,\r\n // \"closed\": false,\r\n // \"inVideoCall\": false,\r\n // \"inScreenShare\": false,\r\n // };\r\n // // console.log(JSON.stringify(newChannel));\r\n // // console.log(newChannel.name);\r\n // this._postChannel(newChannel);\r\n // }\r\n\r\n // _postChannel(newChannel:any) {\r\n // this._apiCallsService.postChannel(newChannel)\r\n // .subscribe(res => {\r\n // if (res.status === 201) {\r\n // let newChannel = res.body;\r\n // this.faxChannelId = newChannel.channelId;\r\n // this.createFaxAccount();\r\n // } else {\r\n // console.error(\"Post Channel\", res);\r\n // this._toastService.error(\"Failed to create fax account\");\r\n // }\r\n // });\r\n // }\r\n\r\n // createFaxAccount() {\r\n // let newAccount = {\r\n // faxProviderId: this.newFaxControls.faxProviderId.value,\r\n // faxProviderPassword: this.newFaxControls.faxProviderPassword.value,\r\n // faxNumber: this.newFaxControls.faxNumber.value,\r\n // faxAccountName: this.newFaxControls.faxAccountName.value,\r\n // channelId: this.faxChannelId,\r\n // chatUserId: this.userId,\r\n // };\r\n // console.log(\"fax form value :::: \", newAccount)\r\n\r\n // this._apiCallsService.postCreateUserFaxAccount(newAccount)\r\n // .subscribe(res => {\r\n // if (res.status === 200) {\r\n // console.log('Fax Account Created!');\r\n // this._toastService.success(\"Fax account created\");\r\n // } else {\r\n // console.log (\"Fax Account Creation Failed\", res);\r\n // this._toastService.error(\"Failed to create fax account\");\r\n // }\r\n // });\r\n // }\r\n // \r\n}\r\n","\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n 1\"\r\n (click)=\"goBack()\"\r\n @fadeIn\r\n class=\"back-button\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{\r\n currentFolderArray[currentFolderArray.length - 1]\r\n .fileName | faxFolderName\r\n }}\r\n \r\n / \r\n {{ folderList[0].faxNumber | formatPhoneNumber }}\r\n \r\n
\r\n
\r\n \r\n {{ formattedCurrentDateTime }}\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n RECEIVED\r\n \r\n \r\n \r\n \r\n \r\n \r\n SENT\r\n \r\n \r\n \r\n \r\n
\r\n \r\n SEND A FAX\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Name\r\n
\r\n \r\n Filename\r\n \r\n \r\n Owners\r\n \r\n \r\n Sent By\r\n \r\n \r\n Sent To\r\n \r\n \r\n \r\n Shared With\r\n \r\n \r\n Sent Date\r\n \r\n \r\n Last Modified\r\n \r\n \r\n Pages\r\n \r\n \r\n Pages\r\n \r\n
Actions
\r\n
\r\n \r\n \r\n \r\n \r\n You do not have any faxes.\r\n \r\n \r\n \r\n No match found in this folder.\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n = file.lastActivity && file.isFile\r\n \"\r\n [class.desktop]=\"isDesktop\"\r\n [class.mobile]=\"\r\n selectedFile === filesList[i] && !isDesktop\r\n \"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n \"\r\n class=\"fas fa-star star-icon-full\"\r\n (click)=\"\r\n removeFavorite(file.blobFileId, i, $event)\r\n \"\r\n (dblclick)=\"preventFileDblClick($event)\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n  \r\n
\r\n {{ file.fileName }}\r\n
\r\n
\r\n {{ file.fileName }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n \"\r\n class=\"fas fa-star star-icon-full\"\r\n (click)=\"\r\n removeFavorite(file.blobFileId, i, $event)\r\n \"\r\n (dblclick)=\"preventFileDblClick($event)\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n  \r\n
\r\n {{ file.fileName }}\r\n
\r\n
\r\n {{ file.fileName }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n 0\r\n \"\r\n >\r\n \r\n \r\n {{ file.chatRoomChatUsers.length }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n \"\r\n >\r\n \r\n \r\n {{ file.sharedFilesWith.length }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ file.chatUserKeyNavigation.displayName }}\r\n \r\n \r\n \r\n {{ file.faxNumber | formatPhoneNumber }}\r\n \r\n \r\n \r\n \r\n {{ file.lastUpdated + \"Z\" | date: \"M/d/yy h:mm a\" }}\r\n \r\n
\r\n -- / -- / ---- --:--\r\n
\r\n \r\n \r\n {{ file.created + 'Z' | date: \"M/d/yy h:mm a\" }}\r\n \r\n \r\n -- / -- / ---- --:--\r\n \r\n \r\n \r\n {{ file.pages }}\r\n \r\n \r\n    -\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Adding owner...\r\n \r\n \r\n \r\n  Removing owner...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Sharing fax...\r\n \r\n \r\n \r\n  Removing Shared...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Downloading...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Renaming...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Deleting...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n File: \r\n
\r\n {{ file.fileName }}\r\n
\r\n \r\n \r\n Size:
 \r\n
\r\n {{ file.size | byteConvert }}\r\n
\r\n \r\n \r\n Pages:
 \r\n
\r\n {{ file.pages }}\r\n
\r\n \r\n \r\n Status:
 \r\n
\r\n {{ file.status }}\r\n
\r\n \r\n \r\n Status:
 \r\n
\r\n {{ file.errorCode }}\r\n
\r\n \r\n \r\n Received From:
 \r\n
\r\n {{\r\n file.fromFaxNumber\r\n | mask: \"(000) 000-0000\"\r\n }}\r\n
\r\n \r\n \r\n Sent To:
 \r\n
\r\n {{ file.faxNumber | formatPhoneNumber }}\r\n
\r\n \r\n \r\n Created By:
 \r\n
\r\n {{\r\n file.chatUserKeyNavigation\r\n .displayName\r\n }}\r\n
\r\n \r\n \r\n Created:
 \r\n
\r\n {{\r\n file.created + \"Z\"\r\n | date: \"M/d/yy h:mm a\"\r\n }}\r\n
\r\n \r\n \r\n Last Modified: \r\n
\r\n {{\r\n file.lastUpdated + \"Z\"\r\n | date: \"M/d/yy h:mm a\"\r\n }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Name: \r\n
\r\n {{ file.fileName | faxFolderName }}\r\n
\r\n \r\n \r\n Created: \r\n
\r\n {{\r\n file.created | date: \"M/d/yy h:mm a\"\r\n }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Loading more faxes...\r\n \r\n \r\n \r\n  \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n  Adding owner...\r\n \r\n \r\n \r\n  Removing owner...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Sharing fax...\r\n \r\n \r\n \r\n  Removing Shared...\r\n \r\n \r\n \r\n \r\n \r\n \r\n  Downloading...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Renaming...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Deleting...\r\n \r\n
\r\n
\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n

Current Owners

\r\n 3\"\r\n >\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{ user.chatUserKeyNavigation.displayName }}\r\n

\r\n \r\n {{ user.chatUserKeyNavigation.username }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n

Add an Owner

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n 3\"\r\n >\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

\r\n {{ user.displayName }}\r\n

\r\n

\r\n {{ user.username }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n No Users Found\r\n

\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n

Shared with

\r\n 3\"\r\n >\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {{ user.chatUserKeyNavigation.displayName }}\r\n

\r\n \r\n {{ user.chatUserKeyNavigation.username }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n

Share Fax

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n 3\"\r\n >\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

\r\n {{ user.displayName }}\r\n

\r\n

\r\n {{ user.username }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n No Users Found\r\n

\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n

Send A Fax

\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n  Uploading Fax...\r\n \r\n

File To Send

\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n

Send To Fax

\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Sending From

\r\n \r\n \r\n
\r\n
\r\n \r\n Send Fax\r\n \r\n
\r\n \r\n \r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FileStorageHomepageComponent } from './file-storage-homepage/file-storage-homepage.component';\r\n\r\n\r\n// const routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild([\r\n { path: \"filestorage\", component: FileStorageHomepageComponent }\r\n ])],\r\n exports: [RouterModule]\r\n})\r\nexport class FileStorageAppRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { FileStorageAppRoutingModule } from './file-storage-app-routing.module';\r\nimport { FileStorageHomepageComponent } from './file-storage-homepage/file-storage-homepage.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n FileStorageHomepageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SharedModule,\r\n FileStorageAppRoutingModule\r\n ]\r\n})\r\nexport class FileStorageAppModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'app-file-storage-homepage',\r\n templateUrl: './file-storage-homepage.component.html',\r\n styleUrls: [] // no css ... \r\n})\r\n\r\nexport class FileStorageHomepageComponent {\r\n} \r\n// ","","import { FormGroup } from '@angular/forms';\r\n\r\n//For schedule meeting\r\nexport function ChannelSelected() {\r\n return (formGroup: FormGroup) => {\r\n const typeControl = formGroup.controls['type'];\r\n const channelIdControl = formGroup.controls['channelId']\r\n\r\n if (channelIdControl.errors && !channelIdControl.errors.channelSelected) {\r\n // return if another validator has already found an error on the ChannelIdControler\r\n return;\r\n }\r\n if (typeControl.value === 'channel') {\r\n if (channelIdControl.value === '' || !channelIdControl.value) {\r\n channelIdControl.setErrors({ channelSelected: true });\r\n return;\r\n }\r\n }\r\n channelIdControl.setErrors(null);\r\n }\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\n\r\n// custom validator to check that two fields match\r\nexport function MustMatch(controlName: string, matchingControlName: string) {\r\n return (formGroup: FormGroup) => {\r\n const control = formGroup.controls[controlName];\r\n const matchingControl = formGroup.controls[matchingControlName];\r\n\r\n if (matchingControl.errors && !matchingControl.errors.mustMatch) {\r\n // return if another validator has already found an error on the matchingControl\r\n return;\r\n }\r\n\r\n // set error on matchingControl if validation fails\r\n if (control.value !== matchingControl.value) {\r\n matchingControl.setErrors({ mustMatch: true });\r\n } else {\r\n matchingControl.setErrors(null);\r\n }\r\n }\r\n}\r\n\r\n\r\n// this one not working ... \r\nexport function CantMatch(controlName: string, matchingControlName: string) {\r\n return (formGroup: FormGroup) => {\r\n const control = controlName;\r\n const matchingControl = formGroup.controls[matchingControlName];\r\n\r\n if (matchingControl.errors && !matchingControl.errors.mustMatch) {\r\n // return if another validator has already found an error on the matchingControl\r\n return;\r\n }\r\n\r\n // set error on matchingControl if validation fails\r\n if (control === matchingControl.value) {\r\n matchingControl.setErrors({ mustMatch: true });\r\n } else {\r\n matchingControl.setErrors(null);\r\n }\r\n }\r\n}\r\n\r\n\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { Constants } from '../constants';\r\nimport { AuthService } from '../core/auth.service';\r\nimport { ApiCallsService } from '../services/api-calls.service';\r\nimport { ChannelService } from '../services/channel-service';\r\nimport { GuestService } from '../services/guest.service';\r\nimport { MeetingService } from '../services/meeting.service';\r\nimport { ToastNotificationService } from '../services/toast-notification.service';\r\nimport { ChannelUser } from '../shared/interface/channel-user';\r\nimport { consoleLogStyle } from '../shared/varaibles';\r\n\r\n\r\n@Component({\r\n selector: 'home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss']\r\n})\r\nexport class HomeComponent implements OnInit, OnDestroy {\r\n public userInfo: ChannelUser = this._authService._channelUserInfo; \r\n \r\n public _isSignedIn: boolean = false;\r\n\r\n public isGuest: boolean = this._authService._userInfo?.role.some(role => role.toLowerCase() === 'guest');\r\n public isViewer: boolean = this._authService._userInfo?.role.some(role => role.toLowerCase() === 'viewer'); // NDIA\r\n public returnUrl: string = \"\";\r\n public subscriptions: Subscription[] = [];\r\n public meetingId: string = \"\";\r\n public token: string = \"\";\r\n channelId: any;\r\n \r\n constructor(\r\n public _toastService: ToastNotificationService,\r\n private _authService: AuthService,\r\n private _guestService: GuestService,\r\n private _router: Router,\r\n private _channelService: ChannelService,\r\n private _meetingService: MeetingService\r\n ) {\r\n this.handleScreenCheck();\r\n\r\n this.subscriptions.push(\r\n this._authService.userChange$.subscribe(user => {\r\n this.isGuest = this._authService._userHighestRole === \"Guest\";\r\n this.isViewer = this._authService._userHighestRole === \"Viewer\"; // NDIA - Streaming\r\n if (this.isGuest && localStorage.getItem(\"guest_mt\") == this.token) this._guestService.routeToChannelInvited();\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this._authService.channelUserInfoChanged$.subscribe(() => {\r\n if (this._authService._user) {\r\n // console.log(\"%c Channel User Constructor 🔹\", consoleLogStyle, this._authService._channelUserInfo)\r\n // if (this._authService._channelUserInfo) {\r\n // }\r\n this.userInfo = this._authService._channelUserInfo;\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit() {\r\n console.log(window.location.href);\r\n if(window.location.href.indexOf('?LoginCallback') > -1){\r\n this.getMeetingDetails();\r\n if(this.isGuest && localStorage.getItem(\"guest_mt\") === this.token){\r\n this.getMeeting();\r\n console.log(\"Channel: \" + this.channelId);\r\n localStorage.setItem(\"channel\",this.channelId);\r\n this._router.navigate(['/channel/' + this.channelId]);\r\n }else{\r\n this.returnUrl = `${Constants.stsAuthority}Account/LoginCallback?meetingId=${this.meetingId}&token=${this.token}`\r\n localStorage.setItem(\"guest_mt\", this.token); \r\n window.location.href = this.returnUrl;\r\n }\r\n\r\n }else if (this.isGuest) this._guestService.routeToChannelInvited();\r\n\r\n \r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n redirect() {\r\n this._router.navigate(['/events']);\r\n }\r\n\r\n handleScreenCheck() {\r\n // console.info(\"screen check from home _isDesktop?:\", this._channelService._isDesktop)\r\n if (!this._channelService._isDesktop) {\r\n this.redirect();\r\n }\r\n }\r\n getMeetingDetails() {\r\n let url = decodeURIComponent(window.location.href.split('?LoginCallback')[1]);\r\n this.meetingId = url.split('/')[1];\r\n this.token = url.split('/')[2].slice(0,-1);\r\n }\r\n\r\n getMeeting(){\r\n this._meetingService.getMeetingById(this.meetingId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.channelId = data.body.channeId;\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // 💡 utils ref ... \r\n // stopProp(e: Event) {\r\n // e.stopPropagation();\r\n // }\r\n // prevDef(e: Event) {\r\n // e.preventDefault();\r\n // }\r\n // prevDefStopProp(e: Event) {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n // }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // ❌\r\n // no app section in new design ... \r\n\r\n // apps not in new design ... app service removed ... \r\n // public apps: any = [];\r\n // public appsPag: any = {};\r\n // \r\n // _getAppsForChannelUser() {\r\n // this._appsService.getAppsForChannelUser(this._authService._user.profile.sub)\r\n // .subscribe(data => {\r\n // this.apps = data.body;\r\n // this.appsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // });\r\n // }\r\n // _getMoreApps(link:any) {\r\n // this._apiCallsService.getGenericForPagination(link)\r\n // .subscribe(data => {\r\n // this.apps = data.body;\r\n // this.appsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // });\r\n // }\r\n// ❌ ","\r\n\r\n\r\n\r\n\t
\r\n\t\t\r\n\t\t \r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n\t
\r\n\t\t\r\n\t\t \r\n\t
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-page-not-found',\r\n templateUrl: './pagenotfound.component.html' //,\r\n //styleUrls: ['./pagenotfound.component.scss']\r\n})\r\nexport class PageNotFoundComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n}\r\n","
\r\n \r\n

This is not the page you were looking for!

\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthService } from '../core/auth.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-signin-callback',\r\n template: `
`\r\n})\r\n\r\nexport class SigninRedirectCallbackComponent implements OnInit {\r\n\r\n constructor(private _authService: AuthService, private _router: Router) { }\r\n\r\n ngOnInit() {\r\n this._authService.completeSignIn().then(user => {\r\n this._router.navigate(['/'], { replaceUrl: true });\r\n });\r\n }\r\n}\r\n\r\n// this component apears to completes sign in and redirect to home ? (cote)","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../core/auth.service';\r\n\r\n@Component({\r\n selector: 'app-signout-callback',\r\n template: `
`\r\n})\r\n\r\nexport class SignoutRedirectCallbackComponent implements OnInit {\r\n\r\n constructor(private _authService: AuthService, private _router: Router) { }\r\n\r\n ngOnInit() {\r\n this._authService.completeSignOut().then(_ => {\r\n this._router.navigate(['/login'], { replaceUrl: true });\r\n })\r\n }\r\n}\r\n\r\n// this component apears to completes sign out and redirect","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { AuthService } from \"../core/auth.service\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: \"unauthorized\",\r\n templateUrl: \"./unauthorized.component.html\",\r\n styleUrls: [\"./unauthorized.component.scss\"],\r\n})\r\nexport class UnauthorizedComponent implements OnInit {\r\n @Input(\"channelAccessMsg\") channelAccessMsg: boolean; // ❔❔❔ i do not see this input being passed anywhere ...\r\n public channelMessage: boolean = false;\r\n\r\n public _isSignedIn: boolean;\r\n\r\n constructor(\r\n private _authService: AuthService, \r\n private _location: Location, \r\n private _router: Router\r\n ) {\r\n this._authService.isSignedIn(false).then(signedIn => {\r\n this._isSignedIn = signedIn;\r\n if(!this._isSignedIn) {\r\n this._router.navigate(['/login']);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"Channel Message: \" + this.channelAccessMsg);\r\n this.channelMessage = this.channelAccessMsg;\r\n }\r\n\r\n goBack() {\r\n this._location.back();\r\n }\r\n\r\n goHome() {\r\n this._router.navigate(['/home']);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n

\r\n You may not have access to this area.\r\n

\r\n

Contact your administrator to get access.

\r\n \r\n
\r\n
\r\n

\r\n

\r\n You do not have access to this channel.\r\n

\r\n

Contact your administrator to get access.

\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { Platform } from '@angular/cdk/platform';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { consoleLogStyle } from '../shared/varaibles';\r\nimport { ChannelService } from '../services/channel-service';\r\nimport { ToastNotificationService } from '../services/toast-notification.service';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../core/auth.service';\r\nimport { ChannelUser } from '../shared/interface/channel-user';\r\n\r\ninterface Device {\r\n deviceId: string;\r\n groupId: string;\r\n kind: string;\r\n label: string;\r\n};\r\n\r\n@Component({\r\n selector: 'app-jitsi-call-manager',\r\n templateUrl: './jitsi-call-manager.component.html',\r\n styleUrls: ['./jitsi-call-manager.component.scss']\r\n})\r\nexport class JitsiCallManagerComponent implements OnInit {\r\n public userInfo: ChannelUser = this._authService._channelUserInfo;\r\n\r\n public channelId: string;\r\n public channelName: string;\r\n public displayManager: boolean;\r\n\r\n public inVideo: boolean; //remove if not used in video\r\n\r\n readonly DEVICEPREFERENCES: string = \"devicePreferences\";\r\n public showPreviewModal: boolean = false;\r\n public isCallStarter: boolean = false;\r\n public callAccepted: boolean = false;\r\n\r\n public previewVideoInputs: Array = [];\r\n public previewAudioInputs: Array = [];\r\n public previewAudioOutputs: Array = [];\r\n\r\n public previewCurrentVideoInputId: string = null;\r\n public previewCurrentAudioInputId: string = null;\r\n public previewCurrentAudioOutputId: string = null; // \r\n\r\n public previewVideoStream: MediaStream;\r\n public previewAudioStream: MediaStream;\r\n\r\n public videoPreviewOn: boolean;\r\n public audioPreviewOn: boolean = false;\r\n\r\n public currentMicrophoneStream: MediaStreamAudioSourceNode;\r\n public audioAnalyzer: AnalyserNode;\r\n // 💡❌ replace with new AudioWorklet ... \r\n public audioScriptProcessor: ScriptProcessorNode;\r\n\r\n public devicesReady: any = false;\r\n\r\n public isSettingJitsiDevices: boolean;\r\n\r\n public devicePreferences: any = {};\r\n\r\n public matRippleDarkMode = '#ffffff1a';\r\n\r\n public clearTimer: boolean = false;\r\n\r\n constructor(\r\n @Inject('rippleColor') public rippleColor: string,\r\n private _toastService: ToastNotificationService,\r\n public _channelService: ChannelService,\r\n private _authService: AuthService,\r\n public _platform: Platform,\r\n private _router: Router,\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this._channelService.onJitisiCallManagerEvent$\r\n .subscribe(callObj => {\r\n if (!this.channelId) {\r\n console.log(\"jitisi call manager channel info\", callObj);\r\n this.isCallStarter = callObj.user.channelUserId === this._authService?._userInfo?.sub;\r\n this.getPreferences();\r\n this.channelId = callObj.channelId;\r\n this.channelName = callObj.channelName;\r\n if (!this.isCallStarter) {\r\n //if user doesnt answer within 10seconds after reciving\r\n setTimeout(() => {\r\n if (!this.clearTimer) {\r\n this._channelService.callFailed(callObj.channelId);\r\n this.hidePreview();\r\n this.resetManager();\r\n this._toastService.error(\"Call Not Accepted\");\r\n } else {\r\n this.clearTimer = false;\r\n }\r\n }, 10000)\r\n } else {\r\n //backup user doesnt reciving call\r\n setTimeout(() => {\r\n if (!this.clearTimer) {\r\n this.hidePreview();\r\n this.resetManager();\r\n this._toastService.error(\"Unable to call user, user may be busy or offline\");\r\n } else {\r\n this.clearTimer = false;\r\n }\r\n }, 20000)\r\n }\r\n this.showPreview()\r\n } else {\r\n //if you receivce another call while call manager is up\r\n this._channelService.callFailed(callObj.channelId);\r\n }\r\n });\r\n\r\n this._channelService.onJitisiCallFailedEvent$\r\n .subscribe(channelId => {\r\n if (this.isCallStarter && (channelId === this.channelId)) {\r\n this.hidePreview();\r\n this.resetManager();\r\n this._toastService.error(\"Unable to call user, user may be busy or offline\");\r\n }\r\n });\r\n\r\n this._channelService.onJitisiCallCancelledEvent$\r\n .subscribe(channelId => {\r\n if (channelId === this.channelId) {\r\n this.hidePreview();\r\n this.resetManager();\r\n this._toastService.error(\"Call has been Cancelled\");\r\n }\r\n });\r\n\r\n this._channelService.onJitisiCallResponseEvent$\r\n .subscribe(callObj => {\r\n console.log(\"Call response\", callObj);\r\n if (callObj.channelId === this.channelId && callObj.user.channelUserId !== this._authService?._userInfo?.sub) {\r\n this.clearTimer = true;\r\n if (callObj.hasAccepted) {\r\n this.callAccepted = true;\r\n } else {\r\n this.hidePreview();\r\n this.resetManager();\r\n this._toastService.error(\"User has Denied your call\");\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n resetManager(): void {\r\n this.channelId = null\r\n this.channelName = null;\r\n this.isCallStarter = false;\r\n this.callAccepted = false;\r\n }\r\n\r\n getPreferences() {\r\n // console.log(\"getPreferences called\");\r\n this.devicePreferences = JSON.parse(localStorage.getItem(this.DEVICEPREFERENCES));\r\n // console.log(\"devicePreferences: \");\r\n // console.log(this.devicePreferences);\r\n if (this.devicePreferences === null) {\r\n this.devicePreferences = {\r\n \"videoId\": \"default\",\r\n \"audioId\": \"default\",\r\n \"videoRes\": 480,\r\n \"jitsi\": {\r\n \"startWithVideoMuted\": true,\r\n \"startWithAudioMuted\": false\r\n }\r\n };\r\n this.setPreference();\r\n } else if (!this.devicePreferences.jitsi) {\r\n this.devicePreferences.jitsi = {\r\n \"startWithVideoMuted\": true,\r\n \"startWithAudioMuted\": false\r\n }\r\n this.setPreference();\r\n }\r\n this.videoPreviewOn = !this.devicePreferences.jitsi.startWithVideoMuted\r\n this.audioPreviewOn = !this.devicePreferences.jitsi.startWithAudioMuted\r\n this.devicesReady = true;\r\n }\r\n\r\n setPreference() {\r\n localStorage.setItem(this.DEVICEPREFERENCES, JSON.stringify(this.devicePreferences));\r\n }\r\n\r\n toggleManager(): void {\r\n this.displayManager = !this.displayManager;\r\n }\r\n\r\n showPreview() {\r\n this.displayManager = true;\r\n this.getPreviewMediaDevices();\r\n setTimeout(() => {\r\n console.log(this.devicePreferences.jitsi);\r\n if (!this.devicePreferences.jitsi.startWithVideoMuted) {\r\n this.startVideoPreview();\r\n }\r\n if (!this.devicePreferences.jitsi.startWithAudioMuted) {\r\n this.audioPreviewToggle(true);\r\n }\r\n });\r\n }\r\n\r\n hidePreview() {\r\n this.destroyVideoPreview();\r\n this.destroyAudioPreview();\r\n this.displayManager = false;\r\n this.audioPreviewOn = false;\r\n this.updateLastActivity();\r\n }\r\n\r\n startVideoPreview() {\r\n // \r\n if (this.previewCurrentVideoInputId) {\r\n let constraints = { deviceId: { exact: this.previewCurrentVideoInputId } };\r\n console.log(\"%c starting in call video preview w/ current input\", consoleLogStyle, this.previewCurrentVideoInputId)\r\n this.initPreCallVideoPreview({ video: constraints, audio: false }, false);\r\n } else {\r\n console.log(\"%c starting in call video preview from nothing\", consoleLogStyle)\r\n this.initPreCallVideoPreview({ video: true, audio: false }, true);\r\n }\r\n }\r\n\r\n initPreCallVideoPreview(config: any, isInitial: boolean) {\r\n let vidEl: HTMLVideoElement = document.getElementById('videoPreviewEl-pre-join');\r\n // console.info(\"video preview element?\", vidEl)\r\n let browser = navigator;\r\n browser.getUserMedia = (browser.getUserMedia ||\r\n browser.webkitGetUserMedia ||\r\n browser.mozGetUserMedia ||\r\n browser.msGetUserMedia);\r\n // console.info(\"browser?\", browser)\r\n browser.mediaDevices.getUserMedia(config)\r\n .then((stream) => {\r\n // if (isInitial) {\r\n // this.getPreviewMediaDevices();\r\n // }\r\n // console.info(\"user video stream?\", stream)\r\n this.previewVideoStream = stream;\r\n vidEl.srcObject = stream;\r\n // this.videoPreviewOn = true;\r\n // this.videoPreviewOn = !this.devicePreferences.jitsi.startWithVideoMuted\r\n\r\n // this.devicePreferences.jitsi.startWithVideoMuted = false;\r\n }).catch(err => {\r\n console.error(err.name + \": \" + err.message, err);\r\n this._toastService.error(`${err.name} : ${err.message}, you may need to reset your browser permissions. (video preview)`);\r\n });\r\n }\r\n\r\n // gets users devices & populates select inputs ... \r\n getPreviewMediaDevices() {\r\n let videoDevices = [];\r\n let audioInputDevices = [];\r\n let audioOutputDevices = [];\r\n navigator.mediaDevices.enumerateDevices()\r\n .then(devices => {\r\n devices.forEach(device => {\r\n // console.log(\"user devices enum: \",device);\r\n let option: Device = {\r\n \"deviceId\": device.deviceId,\r\n \"groupId\": device.groupId,\r\n \"kind\": device.kind,\r\n \"label\": device.label\r\n };\r\n if (device.kind === 'audioinput') {\r\n audioInputDevices.push(option);\r\n } else if (device.kind === 'audiooutput') {\r\n audioOutputDevices.push(option);\r\n } else if (device.kind === 'videoinput') {\r\n videoDevices.push(option);\r\n } else {\r\n console.log(\"Other Device: \" + device.kind + \": \" + device.label + \" id = \" + device.deviceId + \" was found.\");\r\n }\r\n });\r\n }).catch(err => {\r\n // console.log(err.name + \": \" + err.message, err)\r\n this._toastService.error(`${err.name} : ${err.message}, you may need to reset your browser permissions. (get preview devices)`);\r\n }).finally(() => {\r\n this.previewVideoInputs = videoDevices;\r\n if (this.previewVideoInputs.length > 0) {\r\n if (!this.previewCurrentVideoInputId) {\r\n this.previewCurrentVideoInputId = this.previewVideoInputs[0].deviceId; // SET TO CURRENT FOR SELECT ... \r\n }\r\n // console.log(\"select val?\", this.vidPreSelect)\r\n } else {\r\n this._toastService.error('No camera found.')\r\n }\r\n // console.log(\"user devices video: \", this.previewVideoInputs);\r\n\r\n this.previewAudioInputs = audioInputDevices;\r\n if (this.previewAudioInputs.length > 0) {\r\n if (!this.previewCurrentAudioInputId) {\r\n this.previewCurrentAudioInputId = this.previewAudioInputs[0].deviceId;\r\n }\r\n } else {\r\n this._toastService.error('No audio input found.')\r\n }\r\n // console.log(\"user devices audio input: \", this.previewAudioInputs);\r\n\r\n this.previewAudioOutputs = audioOutputDevices;\r\n if (this.previewAudioOutputs.length > 0) {\r\n if (!this.previewCurrentAudioOutputId) {\r\n this.previewCurrentAudioOutputId = this.previewAudioOutputs[0].deviceId;\r\n }\r\n } else {\r\n // this._toastService.error('No audio output found.')\r\n console.info(\"no audio output found.\")\r\n }\r\n // console.log(\"user devices audio output: \", this.previewAudioOutputs);\r\n });\r\n }\r\n\r\n // video preview toggles\r\n videoPreviewToggle(hideVideoPreview: boolean) {\r\n // console.info(\"%c vid tog e : \", consoleLogStyle, hideVideoPreview)\r\n this.devicePreferences.jitsi.startWithVideoMuted = !hideVideoPreview;\r\n hideVideoPreview ? this.setVideoPreviewInput() : this.destroyVideoPreview();\r\n }\r\n\r\n setVideoPreviewInput() {\r\n this.destroyVideoPreview();\r\n // \r\n let constraints = { deviceId: { exact: this.previewCurrentVideoInputId } };\r\n console.log(\"%c starting in call preview current input\", consoleLogStyle, this.previewCurrentVideoInputId)\r\n this.initPreCallVideoPreview({ video: constraints, audio: false }, false);\r\n }\r\n\r\n // cuts current VIDEO preview track ... \r\n destroyVideoPreview() {\r\n let vidEl: HTMLVideoElement = document.getElementById('videoPreviewEl-pre-join');\r\n vidEl.srcObject = null;\r\n if (this.previewVideoStream) {\r\n this.previewVideoStream.getTracks().forEach((track) => {\r\n track.stop();\r\n });\r\n }\r\n }\r\n\r\n // audio preview toggles\r\n audioPreviewToggle(showAudioPreview: boolean) {\r\n console.log(showAudioPreview);\r\n this.audioPreviewOn = showAudioPreview;\r\n // console.info(\"%c audio tog e audio on? : \", consoleLogStyle, this.audioPreviewOn)\r\n this.devicePreferences.jitsi.startWithAudioMuted = !showAudioPreview;\r\n showAudioPreview ? this.setAudioPreviewInput() : this.destroyAudioPreview();\r\n }\r\n\r\n setAudioPreviewInput() {\r\n this.destroyAudioPreview();\r\n // \r\n let browser = navigator;\r\n browser.getUserMedia = (browser.getUserMedia ||\r\n browser.webkitGetUserMedia ||\r\n browser.mozGetUserMedia ||\r\n browser.msGetUserMedia);\r\n let constraints: any = true;\r\n if (this.previewCurrentAudioInputId) {\r\n constraints = { deviceId: { exact: this.previewCurrentAudioInputId } };\r\n }\r\n browser.mediaDevices.getUserMedia({ audio: constraints })\r\n .then((stream) => {\r\n\r\n this.previewAudioStream = stream;\r\n const audioContext = new AudioContext();\r\n // console.info(\"%c \", consoleLogStyle)\r\n\r\n this.currentMicrophoneStream = audioContext.createMediaStreamSource(stream);\r\n // console.info(\"%c mic to dissconect on hide? : \", consoleLogStyle, this.currentMicrophoneStream)\r\n\r\n this.audioAnalyzer = audioContext.createAnalyser();\r\n // console.info(\"%c analyzer? \", consoleLogStyle, this.audioAnalyzer)\r\n this.audioAnalyzer.smoothingTimeConstant = 0.8;\r\n this.audioAnalyzer.fftSize = 1024;\r\n\r\n this.currentMicrophoneStream.connect(this.audioAnalyzer);\r\n\r\n // 💡❌ replace with new AudioWorklet ... \r\n this.audioScriptProcessor = audioContext.createScriptProcessor(2048, 1, 1);\r\n // console.info(\"%c audio script proccessor \", consoleLogStyle, this.audioScriptProcessor)\r\n\r\n this.audioAnalyzer.connect(this.audioScriptProcessor);\r\n this.audioScriptProcessor.connect(audioContext.destination);\r\n\r\n this.audioScriptProcessor.onaudioprocess = () => {\r\n\r\n const array = new Uint8Array(this.audioAnalyzer.frequencyBinCount);\r\n this.audioAnalyzer.getByteFrequencyData(array);\r\n\r\n const arraySum = array.reduce((a, value) => a + value, 0);\r\n const average = arraySum / array.length;\r\n // console.info( \"%c Volume level \", consoleLogStyle, Math.round(average));\r\n\r\n this.colorBars(average);\r\n };\r\n // console.info(\"%c \", consoleLogStyle)\r\n }).catch(err => {\r\n // console.error(err.name + \": \" + err.message);\r\n this._toastService.error(`${err.name} : ${err.message}, you may need to reset your browser permissions. (audio preview)`);\r\n });\r\n }\r\n\r\n // Make own componet for Sound\r\n colorBars(vol: number) {\r\n const allBars = Array.from(document.getElementsByClassName('bar') as HTMLCollectionOf);\r\n const dot = document.getElementById('audio-dot');\r\n const shadow = document.getElementById('audio-bars');\r\n const numberOfBarsToColor = Math.round(vol / 10);\r\n // console.info(\"%c # of bars to color \", consoleLogStyle, numberOfBarsToColor)\r\n const barsToColor = allBars.slice(0, numberOfBarsToColor);\r\n for (const bar of allBars) {\r\n bar.style.opacity = '0';\r\n }\r\n for (const bar of barsToColor) {\r\n // console.log(bar[i]);\r\n bar.style.opacity = '1';\r\n if (numberOfBarsToColor > 9) {\r\n bar.style.backgroundColor = 'var(--new-status-red)';\r\n dot.style.backgroundColor = 'var(--new-status-red)';\r\n shadow.style.boxShadow = 'inset -0.1rem -0.1rem 0.4rem rgba(255, 0, 85, 0.8), inset 0.1rem 0.1rem 0.4rem rgba(255, 0, 85, 0.8)';\r\n } else {\r\n bar.style.backgroundColor = 'var(--caribbean-green)';\r\n dot.style.backgroundColor = 'var(--caribbean-green)';\r\n shadow.style.boxShadow = 'inset -0.1rem -0.1rem 0.4rem rgba(18, 202, 150, 0.8), inset 0.1rem 0.1rem 0.4rem rgba(18, 202, 150, 0.8)';\r\n }\r\n }\r\n }\r\n\r\n // cuts current AUDIO preview track & analyzers & processors ... \r\n destroyAudioPreview() {\r\n if (this.previewAudioStream) {\r\n this.previewAudioStream.getTracks().forEach((track) => {\r\n track.stop();\r\n });\r\n }\r\n if (this.currentMicrophoneStream) {\r\n this.currentMicrophoneStream.disconnect();\r\n }\r\n if (this.audioAnalyzer) {\r\n this.audioAnalyzer.disconnect();\r\n }\r\n if (this.audioScriptProcessor) {\r\n this.audioScriptProcessor.disconnect();\r\n }\r\n }\r\n\r\n speakerTest() {\r\n if (this._platform.FIREFOX || this._platform.IOS || this._platform.ANDROID) {\r\n // cant set device id on Speach ... \r\n // let utterance = new SpeechSynthesisUtterance(\"Welcome to via three unity\");\r\n // window.speechSynthesis.speak(utterance);\r\n // console.info(\"%c speaker test FIREFOX\", consoleLogStyle)\r\n // 💡 audio output select is hidden on firefox, need to test safari ... \r\n const audio: HTMLMediaElement = new Audio('../../../../assets/audio/test-tone.mp3');\r\n audio.play();\r\n } else {\r\n // console.info(\"%c speaker test not FIREFOX\", consoleLogStyle, this.previewCurrentAudioOutputId)\r\n // 💡 type is needed as .setSinkId() is experimental and only works on chrome ... \r\n const audio: any = new Audio('../../../../assets/audio/test-tone.mp3');\r\n audio.setSinkId(this.previewCurrentAudioOutputId);\r\n audio.play();\r\n }\r\n }\r\n\r\n // 🚧 not done yet just for logging ...\r\n setAudioPreviewOutput() {\r\n // \r\n console.log('%c current speakers: ', consoleLogStyle, this.previewCurrentAudioOutputId)\r\n }\r\n\r\n cancelCall(): void {\r\n // this._channelService.useManagerSettings = false;\r\n this._channelService.callCancelled(this.channelId);\r\n this.hidePreview();\r\n this.resetManager();\r\n }\r\n\r\n denyCall(): void {\r\n // this._channelService.useManagerSettings = false;\r\n this.clearTimer = true;\r\n this._channelService.callResponse(this.channelId, false);\r\n this.hidePreview();\r\n this.resetManager();\r\n }\r\n\r\n acceptCall(): void {\r\n this._channelService.useManagerSettings = true;\r\n if (!this.isCallStarter) {\r\n this.clearTimer = true;\r\n\r\n this._channelService.callResponse(this.channelId, true);\r\n }\r\n this.setPreference();\r\n this.hidePreview();\r\n this._router.navigate([`/channel/${this.channelId}`]);\r\n this.resetManager();\r\n\r\n }\r\n\r\n modalClickOff(event: Event): void {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n if (value == \"jitsi-call-manager-modal\") {\r\n if (this.isCallStarter) {\r\n this.cancelCall();\r\n } else {\r\n this.denyCall();\r\n }\r\n }\r\n }\r\n\r\n updateLastActivity() {\r\n if (this.channelId) {\r\n this._channelService.updateLastActivity(this.channelId);\r\n }\r\n }\r\n}\r\n","\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\tisCallStarter ? \"Starting a Call\" : \"Incoming call from \" + channelName\r\n\t\t\t\t\t}}\r\n\t\t\t\t

\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ device.label }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tNo Devices To Select From\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCheck for new devices\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tCalling DM\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\tCall Accepted\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{ isCallStarter ? \"Cancel\" : \"Deny\" }}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{ isCallStarter ? \"Join\" : \"Accept\" }}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t\r\n\r\n","import { Component, Inject, OnInit } from \"@angular/core\";\r\nimport { Validators, FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { Constants } from \"../../app/constants\";\r\nimport { ToastNotificationService } from \"../services/toast-notification.service\";\r\n\r\n@Component({\r\n selector: \"login-conference\",\r\n templateUrl: \"./login-conference.component.html\",\r\n styleUrls: [\"./login-conference.component.scss\"],\r\n})\r\nexport class LoginConferenceComponent implements OnInit {\r\n\r\n // public unitySite: string = Constants.unitySite;\r\n public accountSiteRegister: string = `${Constants.accountSite}register`;\r\n public loginForm: FormGroup;\r\n public isLoggingIn: boolean = false;\r\n public loginConfirmed: boolean = false;\r\n public loginError: boolean = false;\r\n public tenant: string = 'ndia';\r\n\r\n public accountSite = Constants.accountSite;\r\n\r\n public currentYear = new Date().getFullYear();\r\n\r\n public loginRippleColor: string = \"rgba(255, 255, 255, 0.28)\"; // login button feedback ...\r\n\r\n public logoIcon2: any = {\r\n logoblue:\r\n \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Partial/logo-blue.png\",\r\n };\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private _toast: ToastNotificationService,\r\n @Inject(\"tooltipDelay\") public tooltipDelay: number\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.createForm();\r\n }\r\n\r\n createForm() {\r\n this.loginForm = this.fb.group({\r\n userName: [\"\", [Validators.required, Validators.minLength(2)]],\r\n email: [\r\n \"\",\r\n [Validators.required, Validators.pattern(\"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,4}$\")],\r\n ],\r\n });\r\n }\r\n\r\n get loginFormControls() {\r\n return this.loginForm.controls;\r\n }\r\n\r\n // login args from api.cs = (loginArgs.Email, loginArgs.Password, loginArgs.RememberMe, lockoutOnFailure: false)\r\n\r\n // ❓ SUBSCRIPTION method does not work with right for some reason with redirectUrl ...\r\n // login() {\r\n // const returnUrl = this.loginForm.value.returnUrl;\r\n // const username = this.loginForm.value.userName;\r\n // const password = this.loginForm.value.password;\r\n // let userObj = {\r\n // \"returnUrl\": returnUrl,\r\n // \"username\": username,\r\n // \"password\": password\r\n // }\r\n // this._authService.loginUser(userObj).subscribe(res => {\r\n // console.log(\"login res?\", res)\r\n // if(res.status === 200) {\r\n // this.loginConfirmed = true;\r\n // console.log(\" redirect url? \", res.body.redirectUrl)\r\n // window.location = res.body.redirectUrl;\r\n // // this._router.navigate([res.body.redirectUrl], { replaceUrl: true }); // this should work to nav now with replace url !\r\n // } else {\r\n // console.error(\"login fail invalid credentials\");\r\n // this.loginError = true;\r\n // }\r\n // });\r\n // }\r\n\r\n async login() {\r\n this.isLoggingIn = true;\r\n const tenant = this.tenant;\r\n const displayName = this.loginForm.value.userName;\r\n const email = this.loginForm.value.email;\r\n const response = await fetch(\r\n `${Constants.stsAuthority}account/PublicLogin`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n credentials: \"include\",\r\n body: JSON.stringify({\r\n displayName,\r\n email,\r\n tenant,\r\n }),\r\n }\r\n );\r\n const data = await response.json().catch((err) => {\r\n console.error(\"🟩 no data from login post\", err);\r\n this.isLoggingIn = false;\r\n this.loginError = true;\r\n });\r\n if (data) {\r\n if (data.isOk) {\r\n // console.log(\"💙 login data\", data);\r\n // console.log(\"💚 redirect url? \", data.redirectUrl);\r\n this.isLoggingIn = false;\r\n this.loginConfirmed = true;\r\n // this._toast.success('Welcome to NDIA 🎉')\r\n window.location = data.redirectUrl;\r\n } else {\r\n console.log(\"❤ login fail invalid credentials\", data);\r\n // this.loginForm.reset();\r\n this.isLoggingIn = false;\r\n this.loginError = true;\r\n }\r\n } else {\r\n console.warn(\"🟧 no data from login post\");\r\n }\r\n }\r\n}\r\n","\r\n
\r\n
\r\n\r\n \"conf-logo\"\r\n\r\n

Powered by   \"via-logo\"

\r\n

The conference has concluded.

\r\n\r\n \r\n \r\n \r\n CREATE ACCOUNT\r\n \r\n \r\n \r\n
\r\n
\r\n

\r\n {{ currentYear }} © VIA3 Corporation. All rights reserved.\r\n Terms of Use |\r\n Privacy Policy\r\n

\r\n
\r\n
\r\n","import { Component, OnInit } from \"@angular/core\";\r\nimport { Validators, FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Constants } from \"../../app/constants\";\r\nimport { consoleLogStyle } from \"../shared/varaibles\";\r\n// import { consoleLogStyle } from '../shared/varaibles';\r\n\r\n\r\n\r\n@Component({\r\n selector: \"login\",\r\n templateUrl: \"./login.component.html\",\r\n styleUrls: [\"./login.component.scss\"],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n\r\n public accountSite = Constants.accountSite;\r\n \r\n // public accountSiteRegister: string = `${Constants.accountSite}register`;\r\n public accountSiteRegister: string = `${Constants.accountSite}`;\r\n public accountSiteForgotPassWord: string = `${Constants.accountSite}forgot-password`;\r\n public loginForm: FormGroup;\r\n public isLoggingIn: boolean = false;\r\n public loginConfirmed: boolean = false;\r\n public loginError: boolean = false;\r\n public loginAttemptsLeft: number;\r\n public isAccountLockedOut: boolean;\r\n public emailConfirmed: boolean;\r\n public isCapsOn: boolean;\r\n public isPasswordVisible:boolean = false;\r\n public returnUrl: string = \"\";\r\n public loginRippleColor: string = 'rgba(255, 255, 255, 0.28)'; // login button feedback ... \r\n public isAutofilled: boolean = false;\r\n\r\n public currentYear = new Date().getFullYear();\r\n \r\n public logoLogin: any = {\r\n logoblue:\r\n \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Partial/logo-via-blue-FIXED.png\",\r\n };\r\n \r\n constructor(\r\n private fb: FormBuilder,\r\n private _router: Router\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.getQueryVariable(\"ReturnUrl\");\r\n // console.log(\"ReturnUrl: \" + this.returnUrl);\r\n this.createForm();\r\n \r\n // chrome autofill ... no need for user interaction ... \r\n setTimeout(() => {\r\n let name = document.getElementById('username');\r\n let pass = document.getElementById('password');\r\n // let submit = document.getElementById('loginbutton');\r\n let fill1 = window.getComputedStyle(name, null).getPropertyValue('appearance') === 'menulist-button';\r\n let fill2 = window.getComputedStyle(pass, null).getPropertyValue('appearance') === 'menulist-button';\r\n // console.log(\"Chrome autofill detected comp & prop val\", window.getComputedStyle(name, null), window.getComputedStyle(name, null).getPropertyValue('appearance'))\r\n // console.log(\"Chrome autofill detected, fill val\")\r\n if(fill1 && fill2) {\r\n // console.log(\"Chrome autofill detected, button enabled, good job!\", fill1, fill2)\r\n this.isAutofilled = true;\r\n }\r\n }, 600);\r\n }\r\n\r\n autofillName(e:any) {\r\n if(e.target.form[0].value && e.target.form[1].value) {\r\n this.loginForm.setValue({\r\n username: e.target.form[0].value,\r\n password: e.target.form[1].value\r\n });\r\n // console.info(\"%c autofill set form full \", consoleLogStyle, e.target.form[0].value, e.target.form[1].value)\r\n } else {\r\n this.loginForm.get('username').setValue(\r\n e.target.value,\r\n );\r\n // console.info(\"%c auto complete name val? \", consoleLogStyle, e.target.value)\r\n }\r\n }\r\n\r\n autofillPass(e:any) {\r\n if(e.target.form[0].value && e.target.form[1].value) {\r\n this.loginForm.setValue({\r\n username: e.target.form[0].value,\r\n password: e.target.form[1].value\r\n });\r\n // console.info(\"%c autofill set form full \", consoleLogStyle, e.target.form[0].value, e.target.form[1].value)\r\n } else {\r\n this.loginForm.get('password').setValue(\r\n e.target.value,\r\n );\r\n // console.info(\"%c auto complete pass val? \", consoleLogStyle, e.target.value)\r\n }\r\n }\r\n\r\n createForm() {\r\n this.loginForm = this.fb.group({\r\n username: [\"\", [Validators.required, Validators.minLength(2)]],\r\n password: [\r\n \"\",\r\n [\r\n Validators.required,\r\n Validators.minLength(8),\r\n Validators.pattern(\r\n \"^(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+*!=-_.]).*$\"\r\n ),\r\n ],\r\n ],\r\n });\r\n }\r\n\r\n get loginFormControls() {\r\n return this.loginForm.controls;\r\n }\r\n\r\n // login args from api.cs = (loginArgs.Email, loginArgs.Password, loginArgs.RememberMe, lockoutOnFailure: false)\r\n\r\n // ❓ SUBSCRIPTION method does not work with right for some reason with redirectUrl ...\r\n // login() {\r\n // const returnUrl = this.loginForm.value.returnUrl;\r\n // const username = this.loginForm.value.username;\r\n // const password = this.loginForm.value.password;\r\n // let userObj = {\r\n // \"returnUrl\": returnUrl,\r\n // \"username\": username,\r\n // \"password\": password\r\n // }\r\n // this._authService.loginUser(userObj).subscribe(res => {\r\n // console.log(\"login res?\", res)\r\n // if(res.status === 200) {\r\n // this.loginConfirmed = true;\r\n // console.log(\" redirect url? \", res.body.redirectUrl)\r\n // window.location = res.body.redirectUrl;\r\n // // this._router.navigate([res.body.redirectUrl], { replaceUrl: true }); // this should work to nav now with replace url !\r\n // } else {\r\n // console.error(\"login fail invalid credentials\");\r\n // this.loginError = true;\r\n // }\r\n // });\r\n // }\r\n\r\n async login() {\r\n // console.log(\"💙 login?\");\r\n this.isLoggingIn = true;\r\n const returnUrl = this.returnUrl;\r\n const username = this.loginForm.value.username;\r\n const password = this.loginForm.value.password;\r\n const response = await fetch(\r\n `${Constants.stsAuthority}account/SpaLogin`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n credentials: \"include\",\r\n body: JSON.stringify({\r\n username,\r\n password,\r\n returnUrl,\r\n }),\r\n }\r\n );\r\n const data = await response.json().catch((err) => {\r\n console.error(\"🔴 no data from login post\", err);\r\n this.isLoggingIn = false;\r\n this.loginError = true;\r\n });\r\n if (data) {\r\n // console.log(\"💙 login data\", data);\r\n if (data.isOk) {\r\n // console.log(\"💚 redirect url? \", data.redirectUrl);\r\n this.isLoggingIn = false;\r\n this.loginConfirmed = true;\r\n window.location = data.redirectUrl;\r\n \r\n } else {\r\n console.error(\"❤ login fail invalid credentials\", data);\r\n // this.getQueryVariable(\"ReturnUrl\");\r\n // this.loginForm.reset();\r\n this.isLoggingIn = false;\r\n this.loginError = true;\r\n this.emailConfirmed = data.emailConfirmed;\r\n // #of attempts/locked out\r\n if (data.attempts > 0) {\r\n this.loginAttemptsLeft = data.attempts;\r\n }\r\n else if (data.lockedOut) {\r\n this.isAccountLockedOut = true;\r\n }\r\n }\r\n } else {\r\n console.error(\"🟧 no data from login post\");\r\n }\r\n }\r\n\r\n capsLockCheck(e: any) {\r\n if (e.keyCode) {\r\n e.getModifierState(\"CapsLock\")\r\n ? (this.isCapsOn = true)\r\n : (this.isCapsOn = false);\r\n } else {\r\n return;\r\n }\r\n }\r\n hideCapsWarn() {\r\n this.isCapsOn = false;\r\n }\r\n showPassword() {\r\n this.isPasswordVisible = this.isPasswordVisible ? false : true;\r\n }\r\n\r\n getQueryVariable(variable: string) {\r\n const query = window.location.search.substring(1);\r\n const vars = query.split(\"&\");\r\n for (let i = 0; i < vars.length; i++) {\r\n let pair = vars[i].split(\"=\");\r\n if (decodeURIComponent(pair[0]) == variable) {\r\n this.returnUrl = decodeURIComponent(pair[1]);\r\n }\r\n }\r\n }\r\n}\r\n// \r\n","\r\n
\r\n
\r\n
\r\n

Login to

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
 Caps lock is on.
\r\n
\r\n
\r\n
Username is required.
\r\n
Username must be at least 2 characters.
\r\n
\r\n
\r\n
Password is required.
\r\n
Password must be at least 8 characters.
\r\n
Password must include: 1 lowercase,
1 uppercase, 1 number & 1 special character.
\r\n
\r\n
\r\n
 Invalid credentials.
\r\n
 Your email has not been confirmed.
\r\n
You have {{loginAttemptsLeft}} attempt 1\">s left.
\r\n
 You have been locked out,
please contact your administrator.
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n

\r\n \r\n Download App\r\n \r\n © {{ currentYear }}, VIA3 Corporation. All rights reserved. \r\n Terms of Use | \r\n Privacy Policy\r\n

\r\n
\r\n
\r\n\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { MessageSidebarComponent } from './message-sidebar/message-sidebar.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { MessageSidebarSelectedComponent } from './message-sidebar-selected/message-sidebar-selected.component';\r\nimport { MessageComposeComponent } from './message-compose/message-compose.component';\r\nimport {RouterModule} from '@angular/router';\r\n\r\n@NgModule({\r\n declarations: [\r\n MessageSidebarComponent,\r\n MessageComposeComponent,\r\n MessageSidebarSelectedComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SharedModule,\r\n RouterModule,\r\n ],\r\n exports: [\r\n MessageSidebarComponent,\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class MessageAppModule { }\r\n","import { Component, OnInit, Input, SimpleChanges, OnChanges, OnDestroy } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription, Subject } from 'rxjs';\r\n// import { ActivatedRoute, Router, Params } from '@angular/router';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { consoleLogStyle } from 'src/app/shared/varaibles';\r\nimport { Constants } from '../../constants';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-message-compose',\r\n templateUrl: './message-compose.component.html',\r\n styleUrls: ['./message-compose.component.scss']\r\n})\r\nexport class MessageComposeComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input('composeUserId') composeUserId: string;\r\n\r\n public showPage: boolean = false;\r\n public channelId: string;\r\n\r\n public messageList = [];\r\n public messageListLoaded: boolean = false;\r\n public userSearchBar: any = {};\r\n public searchUsersList = [];\r\n public searchUsersPag = {};\r\n public composeList = [];\r\n public isSearching: boolean = false;\r\n public isGroup: boolean = false;\r\n public groupName: FormGroup;\r\n\r\n public username: string = this._authService._userInfo.preferred_username;\r\n public composerTenant: string = this._authService._tenant.tenantName;\r\n\r\n public _isSignedIn: boolean = false;\r\n public userCheck: any = {\r\n initial: false,\r\n loaded: false\r\n }\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n // for holding the serch string \r\n private searchSubject = new Subject();\r\n\r\n constructor(\r\n private _chManageService: ProjectChannelService,\r\n private _toastService: ToastNotificationService,\r\n private _channelService: ChannelService,\r\n private _apiCalls: ApiCallsService,\r\n private _authService: AuthService,\r\n ) {\r\n \r\n this.subscriptions.push(\r\n this._authService.userChange$.subscribe(user => {\r\n this.username = this._authService._userInfo.preferred_username;\r\n this.composerTenant = this._authService._tenant.tenantName;\r\n this._getDirectMessageList();\r\n })\r\n )\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n // this._toastService.info(\"changes\");\r\n if (changes.composeUserId) {\r\n let userId = changes.composeUserId.currentValue;\r\n if (userId) {\r\n this.clearSearch()\r\n if (this.groupName) {\r\n this.groupName.reset();\r\n }\r\n this._populateDmPerson(userId);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.composeUserId) {\r\n this._getDirectMessageList();\r\n this.groupName = new FormGroup({\r\n name: new FormControl('', [\r\n Validators.maxLength(56),\r\n Validators.pattern(/^[A-Za-z0-9_-\\s]*$/)\r\n ]),\r\n });\r\n }\r\n // console.info(\"%c composer tenant? \", consoleLogStyle, this.composerTenant)\r\n this.showPage = true;\r\n\r\n //creates the search subject for the search debounce\r\n //delays calling the search query until the user paused for the time allotted (400ms here)\r\n this.searchSubject\r\n .pipe(debounceTime(400), distinctUntilChanged())\r\n .subscribe(searchQuery => {\r\n console.log(\"Search Query Passed: \"+ searchQuery); \r\n this._getUsersBySearchQuery();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n triggerSearch(event: any) {\r\n const searchQuery = (event.target as HTMLInputElement).value;\r\n this.searchSubject.next(searchQuery);\r\n }\r\n\r\n get nameControl() { return this.groupName.get('name'); }\r\n\r\n _populateDmPerson(dmPersonId) {\r\n this._apiCalls.getChannelUserWithChatUserId(dmPersonId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n if (this._authService._user.profile.sub !== data.body.channelUserId) {\r\n this.composeList = [];\r\n this.composeList.push(data.body);\r\n this.setChannel();\r\n }\r\n } else {\r\n // console.log(data)\r\n this._toastService.error(\"Direct Message not found\")\r\n }\r\n });\r\n }\r\n\r\n _getDirectMessageList() {\r\n this._chManageService.getDirectMessageChannels(this._authService._user.profile.sub)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let channels = data.body;\r\n let userList = [];\r\n channels.forEach(channel => {\r\n const userNum = channel.chatRoomChatUsers.length;\r\n if (userNum >= 2) {\r\n userList.push(channel);\r\n }\r\n });\r\n\r\n this.messageList = userList;\r\n // console.log(\"%c Direct Messages List from Message Compose\", consoleLogStyle, this.messageList);\r\n this.messageListLoaded = true;\r\n } else {\r\n console.error(\"Direct Message List\", data);\r\n }\r\n });\r\n }\r\n\r\n _getUsersBySearchQuery() {\r\n this.userSearchBar = document.getElementById('user-search-compose');\r\n let searchString = this.userSearchBar.value.replace(/\\s/g, '');\r\n console.log(\"message compose search query called called\");\r\n if (searchString.length < 1) {\r\n this.searchUsersList = [];\r\n this.isSearching = false;\r\n } else {\r\n this.isSearching = true;\r\n \r\n this._apiCalls.getChannelUsersByTenantAndSearchQuery(this.composerTenant, searchString)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let searchList = data.body;\r\n let newList = [];\r\n searchList.forEach(searchUser => {\r\n if (this._authService._user.profile.sub !== searchUser.channelUserId) {\r\n if (this.composeList.some(composeUser => composeUser.channelUserId === searchUser.channelUserId)) {\r\n return;\r\n } else {\r\n newList.push(searchUser);\r\n }\r\n }\r\n });\r\n this.searchUsersList = newList;\r\n // console.log(this.searchUsersList);\r\n // this.searchUsersList = searchList;\r\n this.searchUsersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n } else {\r\n // console.log(data);\r\n this._toastService.error(\"An error occurred while searching for users\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n clearSearch() {\r\n this.userSearchBar = document.getElementById('user-search-compose');\r\n if (this.userSearchBar) {\r\n this.userSearchBar.value = '';\r\n }\r\n this.searchUsersList = [];\r\n this.isSearching = false;\r\n }\r\n\r\n searchCheckLength() {\r\n let search: any = document.getElementById('user-search-compose');\r\n\r\n if (search) {\r\n if (search.value.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n addUserToComposeList(i) {\r\n // this.composeList = [] //temp For Single\r\n if (this.composeList.length < 8) {\r\n this.composeList.push(this.searchUsersList[i]);\r\n }\r\n if (this.composeList.length > 1) {\r\n this.isGroup = true;\r\n } else {\r\n this.isGroup = false;\r\n }\r\n this.clearSearch();\r\n }\r\n\r\n removeUserFromComposeList(i) {\r\n this.composeList.splice(i, 1);\r\n if (this.composeList.length > 1) {\r\n this.isGroup = true;\r\n } else {\r\n this.isGroup = false;\r\n }\r\n }\r\n\r\n channelCheckSolo() {\r\n if (this.dmUserCompare()) {\r\n // alert(\"channel found\");\r\n this.startMessageToChannel(false);\r\n } else {\r\n // alert(\"channel not found\");\r\n this.setChannel();\r\n }\r\n }\r\n\r\n channelCheckMulti() {\r\n this.composeList.forEach(composeUser => {\r\n if (true) {\r\n return;\r\n } else {\r\n // newList.push(searchUser);\r\n }\r\n });\r\n }\r\n\r\n channelGroup() {\r\n // if (this.groupName.match(/^(?!\\s*$)[A-Za-z0-9_-\\s]*$/)) {\r\n if (this.groupName.value.name.length < 1) {\r\n this.setChannel();\r\n } else if (this.groupName.value.name.match(/^[^\\s][A-Za-z0-9_-\\s]*$/)) {\r\n this.setChannel();\r\n } else {\r\n alert(\"Invalid Group Name\");\r\n }\r\n }\r\n\r\n dmUserCompare() {\r\n return this.composeList.some((composeUser) => {\r\n let tempChannelId = \"\";\r\n if (this.messageList.some((messageItem) => {\r\n if (messageItem.chatRoomChatUsers.length === 2) {\r\n tempChannelId = messageItem.channelId;\r\n return messageItem.chatRoomChatUsers.some(\r\n (messageUser) => {\r\n return (\r\n messageUser.chatUserKeyNavigation.username.toLowerCase() === composeUser.username.toLowerCase()\r\n );\r\n }\r\n );\r\n } else {\r\n return false;\r\n }\r\n })\r\n ) {\r\n this.channelId = tempChannelId;\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n setChannel() {\r\n let newChannel = {\r\n teamProjectId: Constants.directMessageProjId,\r\n channelUserId: this._authService._user.profile.sub,\r\n name: \"\",\r\n type: \"direct\",\r\n videoType: \"jitsi\",\r\n topic: null,\r\n inviteCode: null,\r\n welcome: null,\r\n deleteRule: 0,\r\n deleteInterval: 0,\r\n scope: \"Owner\",\r\n private: true,\r\n closed: false,\r\n inVideoCall: false,\r\n inScreenShare: false,\r\n };\r\n\r\n if (this.isGroup && this.groupName.value.name.length > 0) {\r\n newChannel.name = this.groupName.value.name;\r\n\r\n }\r\n // alert(JSON.stringify(newChannel));\r\n // alert(newChannel.name);\r\n this._postChannel(newChannel);\r\n }\r\n\r\n _postChannel(newChannel) {\r\n this._apiCalls.postChannel(newChannel)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n let newChannel = res.body;\r\n this.channelId = newChannel.channelId;\r\n this._addMultipleOwners();\r\n } else {\r\n // console.error(\"Post Channel\", res);\r\n this._toastService.error(\"Failed to compose message\");\r\n }\r\n });\r\n }\r\n\r\n _activateDmChannel(channelId) {\r\n let chatRoomsChannelUsersObject =\r\n {\r\n \"channelId\": channelId,\r\n \"channelUserId\": this._authService._user.profile.sub,\r\n \"isActive\": true\r\n };\r\n\r\n this._apiCalls.putChatRoomsChannelUsers(chatRoomsChannelUsersObject)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n\r\n this._getDirectMessageList();\r\n } else {\r\n console.error(\"Post Channel\", res);\r\n\r\n }\r\n });\r\n }\r\n\r\n _addMultipleOwners() {\r\n let ownersList = [];\r\n this.composeList.forEach(user => {\r\n ownersList.push({\r\n \"channelUserId\": user.channelUserId,\r\n \"channelId\": this.channelId\r\n });\r\n });\r\n this._apiCalls.postBatchChannelOwners(ownersList)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"Owners Added\");\r\n this.startMessageToChannel(true);\r\n } else if (res.status === 409) {\r\n // console.log(\"Owners Already Exists\");\r\n this.startMessageToChannel(true);\r\n } else {\r\n // console.error(\"Post multiple Owners\", res);\r\n this._toastService.error(\"Failed to compose message\");\r\n }\r\n });\r\n }\r\n\r\n public startMessageToChannel(newChannel: boolean): void {\r\n this._channelService.updateDirectMessageList(\r\n this.channelId,\r\n newChannel\r\n );\r\n let channelName: string;\r\n this._activateDmChannel(this.channelId);\r\n if (this.composeList.length > 1 && this.groupName.value.name.length > 1) {\r\n channelName = this.groupName.value.name;\r\n } else if (this.composeList.length == 1) {\r\n channelName = this.composeList[0].displayName\r\n } else if (this.composeList.length == 2) {\r\n channelName = `${this.composeList[0].displayName} & ${this.composeList[1].displayName}`\r\n } else {\r\n channelName = \"\";\r\n this.composeList.forEach((user, i) => {\r\n if (i == this.composeList.length - 2) {\r\n channelName += user.displayName + \" & \"\r\n } else if (i < this.composeList.length - 1) {\r\n channelName += user.displayName + \", \";\r\n } else {\r\n channelName += user.displayName;\r\n }\r\n });\r\n }\r\n this._channelService.redirectDirectMessage(this.channelId, channelName);\r\n }\r\n\r\n}\r\n","
\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t= 8\"\r\n\t\t\t\t\tplaceholder=\"{{\r\n\t\t\t\t\t\tcomposeList.length < 8 ? 'Find Recipients' : 'Max Recipients Reached'\r\n\t\t\t\t\t}}\"\r\n\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t 0\"\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\"\"\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{{ user.displayName }}\r\n\t\t\t\t\t\t\t{{ user.username }}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
1\">\r\n\t\t\t\t
\r\n\t\t\t\t\t

Send To:

\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t

{{ user.displayName }}

\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t 1 && composeList.length < 8\"\r\n\t\t\t>\r\n\t\t\t\tMax 8 Recipients\r\n\t\t\t

\r\n\t\t\t

7\">max 8 recipients.

\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t

invalid character.

\r\n\t\t
\r\n\t\r\n\r\n\t
\r\n\t\t

0\">\r\n\t\t\tStarting Message...\r\n\t\t

\r\n\r\n
\r\n 0 && messageListLoaded\"\r\n >\r\n {{ isGroup ? \"Create Group Message\" : \"Begin Chatting\" }}\r\n \r\n
\r\n
\r\n\r\n","import { Component, Input, OnInit, Output, EventEmitter, SimpleChanges, OnDestroy, OnChanges } from '@angular/core';\r\n// import { DomSanitizer } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\n// import { AuthService } from 'src/app/core/auth.service';\r\n// import { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\n\r\n@Component({\r\n selector: 'app-message-sidebar-selected',\r\n templateUrl: './message-sidebar-selected.component.html',\r\n styleUrls: ['./message-sidebar-selected.component.scss']\r\n})\r\nexport class MessageSidebarSelectedComponent implements OnInit, OnDestroy, OnChanges {\r\n @Input(\"channelId\") channelId: string;\r\n @Input(\"composeUserId\") composeUserId: string;\r\n @Output(\"closeChat\") closeChat = new EventEmitter();\r\n\r\n public hasNotification = false;\r\n public composeMessage: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _toastService: ToastNotificationService,\r\n private _channelService: ChannelService,\r\n // private _apiCalls: ApiCallsService,\r\n // private _authService: AuthService,\r\n // private sanitizer: DomSanitizer,\r\n private _router: Router\r\n ) {\r\n\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"openFullChat\") {\r\n this._router.navigate(['/channel', this.channelId]);\r\n }\r\n }));\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges) {\r\n let channelId = changes.channelId.currentValue;\r\n \r\n if (channelId) {\r\n if (channelId === 'composeNewMessage') {\r\n this.composeMessage = true;\r\n } else {\r\n this.composeMessage = false;\r\n this.channelInitialize();\r\n }\r\n } else {\r\n this._toastService.error(\"No channel found\");\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n // alert(this.channelId)\r\n // this._toastService.error(\"From Initi\");\r\n // if (this.channelId) {\r\n // if (this.channelId === 'composeNewMessage') {\r\n // this.composeMessage = true;\r\n // } else {\r\n // this.channelInitialize();\r\n // }\r\n // } else {\r\n // this._toastService.error(\"No channel found\");\r\n // }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n return this._channelService.leave(this.channelId);\r\n }\r\n\r\n channelInitialize() {\r\n return this._channelService.join(this.channelId);\r\n }\r\n\r\n openFullChat() {\r\n this._toastService.continue(\"Open in full will close current channel and open a new one with this user / group.\", 'openFullChat');\r\n this.backToMessage();\r\n }\r\n\r\n backToMessage() {\r\n this.closeChat.emit();\r\n }\r\n}\r\n","\r\n \r\n\r\n\r\n \r\n \r\n\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport {\r\n fadeInFast,\r\n listAnimationWrap,\r\n listAnimationItem\r\n} from '../../animations/global-animations';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\nimport { consoleLogStyle } from 'src/app/shared/varaibles';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n//getUsersbysearchquery\r\n\r\n@Component({\r\n selector: 'message-sidebar',\r\n templateUrl: './message-sidebar.component.html',\r\n styleUrls: ['./message-sidebar.component.scss'],\r\n animations: [\r\n fadeInFast,\r\n listAnimationWrap,\r\n listAnimationItem\r\n ]\r\n})\r\nexport class MessageSidebarComponent implements OnInit, OnDestroy {\r\n @Input() userInfo: ChannelUser;\r\n // @Input() pinnedSideBar: boolean;\r\n\r\n public messageList = []; // shown dms\r\n public messageListPag: any = {};\r\n\r\n public messageSound: any;\r\n\r\n public listLoaded:boolean = false;\r\n public isSearching: boolean = false;\r\n public initalUnreadCounted:boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n public channelIdParam: string = null;\r\n public selectedChannel: any = null;\r\n\r\n // for holding the serch string \r\n private searchSubject = new Subject();\r\n\r\n constructor(\r\n private _chManageService: ProjectChannelService,\r\n private _toastService: ToastNotificationService,\r\n private _apiCalls: ApiCallsService,\r\n private _authService: AuthService,\r\n public _channelService: ChannelService,\r\n private router: Router,\r\n private _route: ActivatedRoute,\r\n ) {\r\n //We need to know when the user sends a a chat message to update last message in dm channel\r\n\r\n // Only for new dm channels\r\n this.subscriptions.push(this._channelService.onUpdateDirectMessageListEvent$.subscribe(() => {\r\n // console.log(\"UpateDirectMessageList sub push to get message list (active)\");\r\n if (this._authService._user) {\r\n if (this.isSearching) {\r\n this.searchForMessages();\r\n this._toastService.info(\"You have recieved a new Direct Message, you may want to clear your Direct Message Search\")\r\n } else {\r\n this._getActiveDirectMessageList();\r\n }\r\n } else {\r\n console.error(\"Can't find Signed in User\");\r\n }\r\n }));\r\n\r\n // runs when status is updated MAY NEED TO SWITCH this.messageList to this.messageListFiltered for archive\r\n this.subscriptions.push(this._channelService.onUpdateUserStatusEvent$.subscribe((channelUserStatusList: any) => {\r\n // console.log(\"?\", channelUserStatusList)\r\n this.messageList.forEach(messUser => {\r\n channelUserStatusList.forEach(channelUser => {\r\n if (messUser.username.toLowerCase() === channelUser.username.toLowerCase()) {\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n messUser.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n messUser.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n messUser.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n messUser.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n // messUser.userStatus = \"hidden\";\r\n messUser.userStatus = \"offline\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n messUser.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n messUser.userStatus = \"brb\";\r\n }\r\n }\r\n });\r\n // if (this.isSearching) {\r\n // //do same\r\n // }\r\n });\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onDirectMessageCloseEvent$.subscribe(() => this.closeChat()));\r\n\r\n this.subscriptions.push(this._channelService.onDirectMessageRedirectEvent$.subscribe((channel) => {\r\n // console.log(\"selected channel info\", channel)\r\n this.selectedChannel = null;//For clearing any previous channels\r\n setTimeout(() => {\r\n this.selectedChannel = {\r\n channelId: channel.channelId,\r\n channelName: channel.channelName,\r\n composeUserId: channel.userId\r\n }\r\n }, 1);\r\n \r\n }));\r\n\r\n // runs on message recieved && when you open a dm, will activate archived channel/message\r\n // triggered from sendchannelnotification\r\n this.subscriptions.push(this._channelService.onUnreadDirectMessageNotification$.subscribe((notiObj) => {\r\n // console.log(\"sentObject111\", notiObj);\r\n const nineUnreadMessages: number = 9;\r\n let index = this.messageList.findIndex(dm => dm.channelId === notiObj.channelId);\r\n let message = this.messageList[index];\r\n if (message) {\r\n if (notiObj.message) {\r\n message.lastMessage = notiObj.message;\r\n message.lastMessage.isSender = false;\r\n }\r\n if (notiObj.numUnreadMessages > nineUnreadMessages) {\r\n message.unreadMessages = \"9+\";\r\n } else {\r\n message.unreadMessages = notiObj.numUnreadMessages;\r\n }\r\n if (!message.isActive) {\r\n this._activateDmChannel(message.channelId);\r\n }\r\n if (notiObj.numUnreadMessages > 0) {\r\n // If notification is sent from another user\r\n if (index > 0) {\r\n // If Message is not on Top\r\n this.moveChannelToTop(index);\r\n this.messageSound.play()\r\n // notiObj.hasAudioNotification ? this.messageSound.play() : null;\r\n } else {\r\n // If Message is already on Top\r\n if (notiObj.numUnreadMessages === 1) {\r\n // If Message count was 0 and is now 1\r\n this.messageSound.play()\r\n // notiObj.hasAudioNotification ? this.messageSound.play() : null;\r\n }\r\n }\r\n this._channelService.directMessageNotificationEvent(true);\r\n } else {\r\n // If notification is sent from self\r\n // this.moveChannelToTop(i);\r\n this._channelService.directMessageNotificationEvent(\r\n this.messageList.some(dm => dm.unreadMessages !== 0)\r\n );\r\n }\r\n } else {\r\n this._activateDmChannel(notiObj.channelId);\r\n notiObj.hasAudioNotification ? this.messageSound.play() : null;\r\n //this._channelService.directMessageNotificationEvent(true);\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this.router.events.subscribe(e => {\r\n // console.log(\"event\", this.router.routerState.root)\r\n if (e instanceof NavigationEnd) {\r\n let r = this._route;\r\n while (r.firstChild) {\r\n r = r.firstChild\r\n }\r\n r.params.subscribe(params => {\r\n if (params['channelId']) {\r\n this.channelIdParam = params['channelId'];\r\n } else {\r\n this.channelIdParam = null;\r\n }\r\n // console.log(\"🏎 params?\", params, params['channelId'])\r\n })\r\n }\r\n }));\r\n\r\n // This event only triggers on the message sidebar component for the sender of the direct message\r\n // The message parameter is a channelmessage dto\r\n this.subscriptions.push(this._channelService.onDirectMessageUpdateForSelfEvent$.subscribe((sentMessage) => {\r\n // console.log(\"sentMEssage\", sentMessage);\r\n this.messageList.forEach((message, i) => {\r\n if (message.channelId === sentMessage.channelId) {\r\n if (!message.isActive) {\r\n this._activateDmChannel(message.channelId);\r\n }\r\n message.lastMessage = sentMessage;\r\n message.lastMessage.isSender = true;\r\n this.moveChannelToTop(i);\r\n }\r\n });\r\n }));\r\n\r\n\r\n //When channelUserInfo is received begin channel user\r\n this.subscriptions.push(\r\n this._authService.channelUserInfoChanged$.subscribe(() => {\r\n if (this._authService._user) {\r\n this._getActiveDirectMessageList()\r\n }\r\n }));\r\n }\r\n // end constructor \r\n\r\n ngOnInit() {\r\n this.messageSound = new Audio();\r\n this.messageSound.src = '../../../assets/audio/newMessage02.mp3';\r\n\r\n //creates the search subject for the search debounce\r\n //delays calling the search query until the user paused for the time allotted (400ms here)\r\n this.searchSubject\r\n .pipe(debounceTime(400), distinctUntilChanged())\r\n .subscribe(searchQuery => {\r\n console.log(\"Search Query Passed for dm message search: \"+ searchQuery); \r\n this.searchForMessages();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n triggerSearch(event: any) {\r\n const searchQuery = (event.target as HTMLInputElement).value;\r\n this.searchSubject.next(searchQuery);\r\n }\r\n\r\n // needed to recieve notifications\r\n _getNotifications() {\r\n this._chManageService.getChannelNotificationsByUser(this._authService._userInfo.sub)\r\n .subscribe(data => {\r\n // console.log(\"notifications sub from dm sidebar?\", data) \r\n });\r\n }\r\n\r\n // called on load to get all dm's active && archived \r\n _searchAllDirectMessages(query: string) {\r\n this._chManageService\r\n .searchAllDirectMessageChannels(this._authService._userInfo.sub, query)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let channels = data.body;\r\n this.messageList = this.manageChannelUsers(channels);\r\n // console.log(\"🎄 got ALL dm's?\", this.allMessagesList)\r\n // this.messageListFiltered = this.allMessagesList;\r\n this.messageListPag = JSON.parse(data.headers.get('X-Pagination'));\r\n this.listLoaded = true;\r\n // this._getNotifications();\r\n } else {\r\n console.error(\"Direct Message Search List error\", data);\r\n this.listLoaded = true;\r\n }\r\n });\r\n }\r\n\r\n // only returns active dm's & set this.messageListFiltered to display \r\n _getActiveDirectMessageList() {\r\n this._chManageService.getActiveDirectMessageChannels(this._authService._userInfo.sub)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let channels = data.body;\r\n this.messageList = this.manageChannelUsers(channels);\r\n // console.log(\"%c Active Direct Messages List from Message Sidebar\", consoleLogStyle, this.messageList);\r\n // console.info(\"message list\", this.messageList)\r\n this.messageListPag = JSON.parse(data.headers.get('X-Pagination'));\r\n this.listLoaded = true;\r\n //sets the inital navbar unread message notfications\r\n if (!this.initalUnreadCounted) {\r\n this._channelService.directMessageNotificationEvent(\r\n this.messageList.some(dm => dm.unreadMessages != 0)\r\n );\r\n this.initalUnreadCounted = true;\r\n }\r\n } else {\r\n // console.error(\"Direct Message List error\", data);\r\n this.listLoaded = true;\r\n this._toastService.error(\"Direct Messages Failed To Load.\");\r\n }\r\n });\r\n }\r\n\r\n manageChannelUsers(channels: any) {\r\n let userList: any = [];\r\n channels.forEach(channel => {\r\n let allUsers: any = channel.chatRoomChatUsers;\r\n let users: any = {};\r\n const nineUnreadMessages = 9;\r\n const userNum = channel.chatRoomChatUsers.length\r\n const unreadCount = channel.channelNotifications.length;\r\n // console.log('(from getActive) message all users', allUsers)\r\n if (userNum >= 2) {\r\n if (userNum > 2) {\r\n users = {\r\n // \"username\": userNum + \" User Group With\",\r\n \"displayName\": \"\",\r\n \"lastMessage\": \"\",\r\n \"hash\": \"1\",\r\n \"channelId\": channel.channelId,\r\n \"channelName\": channel.name,\r\n \"userStatus\": \"none\",\r\n \"username\": \"none\",\r\n \"isActive\": true,\r\n \"dateCreated\": channel.dateCreated\r\n };\r\n allUsers.forEach((user, i) => {\r\n if (user.chatUserKeyNavigation.username.toLowerCase() === this._authService._userInfo.preferred_username.toLowerCase()) {\r\n users.isActive = user.isActive;\r\n users.lastMessage = user.lastMessage;\r\n }\r\n });\r\n if (unreadCount > nineUnreadMessages) {\r\n users.unreadMessages = \"9+\";\r\n } else {\r\n users.unreadMessages = unreadCount;\r\n }\r\n } else {\r\n if (allUsers[0].chatUserKeyNavigation.username.toLowerCase() === this._authService._userInfo.preferred_username.toLowerCase()) {\r\n users = allUsers[1].chatUserKeyNavigation;\r\n users.isActive = allUsers[0].isActive;\r\n users.lastMessage = allUsers[0].lastMessage;\r\n } else {\r\n users = allUsers[0].chatUserKeyNavigation;\r\n users.isActive = allUsers[1].isActive;\r\n users.lastMessage = allUsers[1].lastMessage;\r\n }\r\n users.channelId = channel.channelId;\r\n users.channelName = channel.name;\r\n users.dateCreated = channel.dateCreated;\r\n if (users.selectedStatus === 0) {\r\n if (users.presenceStatus === 0) {\r\n users.userStatus = \"offline\";\r\n } else if (users.presenceStatus === 1) {\r\n users.userStatus = \"away\";\r\n } else if (users.presenceStatus === 2) {\r\n users.userStatus = \"active\";\r\n } else if (users.presenceStatus === 3) {\r\n //Temp for incall\r\n users.userStatus = \"active\";\r\n }\r\n } else if (users.selectedStatus === 1) {\r\n // users.userStatus = \"hidden\";\r\n users.userStatus = \"offline\";\r\n } else if (users.selectedStatus === 2) {\r\n users.userStatus = \"dnd\";\r\n } else if (users.selectedStatus === 3) {\r\n users.userStatus = \"brb\";\r\n }\r\n if (unreadCount > nineUnreadMessages) {\r\n users.unreadMessages = \"9+\";\r\n } else {\r\n users.unreadMessages = unreadCount;\r\n }\r\n }\r\n if (users.lastMessage) {\r\n if (users.lastMessage.channelUserKeyNavigation.username.toLowerCase() === this._authService._userInfo.preferred_username.toLowerCase()) {\r\n users.lastMessage.isSender = true;\r\n } else {\r\n users.lastMessage.isSender = false;\r\n }\r\n }\r\n userList.push(users);\r\n }\r\n });\r\n return userList;\r\n }\r\n\r\n searchForMessages() {\r\n console.log(\"searchForMessages fired\")\r\n let filterBar: HTMLInputElement = document.getElementById('searchUserMessages');\r\n this.listLoaded = false;\r\n if (filterBar) {\r\n if (filterBar.value.length > 0) {\r\n this.isSearching = true;\r\n this.messageList = [];\r\n this._searchAllDirectMessages(filterBar.value);\r\n } else {\r\n this.isSearching = false;\r\n this.messageList = [];\r\n this._getActiveDirectMessageList();\r\n }\r\n }\r\n }\r\n\r\n clearFilter() {\r\n let filterBar: HTMLInputElement = document.getElementById('searchUserMessages');\r\n if (filterBar && this.isSearching) {\r\n this.isSearching = false;\r\n this._getActiveDirectMessageList();\r\n filterBar.value = \"\";\r\n }\r\n }\r\n\r\n moveChannelToTop(i: number) {\r\n let messageChannel = this.messageList[i];\r\n let newArray = this.messageList;\r\n newArray.splice(i, 1);\r\n newArray.splice(0, 0, messageChannel);\r\n this.messageList = newArray;\r\n }\r\n\r\n pushChat(channelId: string) {\r\n // console.log(\"ChannelID: \" + channelId);\r\n // console.log(\"channelIdParam: \" + this.channelIdParam);\r\n if (channelId !== this.channelIdParam) {\r\n // console.log(\"🛑 param DOESN'T match!\")\r\n this._channelService.pushDirectMessageToOverlay(channelId);\r\n this.clearFilter();\r\n } else {\r\n // console.log(\"🛑 param matches!\")\r\n return;\r\n }\r\n }\r\n\r\n // TO EMIT COMPOSE NEW CHAT BOX \r\n // channel id could be any for new //\r\n pushComposeNewChat() {\r\n let composeChannelId = \"composeNewMessage\";\r\n // console.log(\"🛑 composeChannelId:\" + composeChannelId);\r\n this._channelService.pushDirectMessageToOverlay(composeChannelId);\r\n }\r\n\r\n // new\r\n openChat(index: number) {\r\n if (this.messageList[index].channelId !== this.channelIdParam) {\r\n //new\r\n this.selectedChannel = this.messageList[index];\r\n this.clearFilter();\r\n } else {\r\n // console.log(\"🛑 param matches!\")\r\n return;\r\n }\r\n }\r\n\r\n openComposeNewChat() {\r\n this.selectedChannel = {\r\n channelId: \"composeNewMessage\",\r\n channelName: \"Compose Direct Message\"\r\n }\r\n this.clearFilter();\r\n }\r\n\r\n closeChat() {\r\n // this._channelService.sendCommand(\"/leave\", this.selectedChannel);\r\n this.selectedChannel = null\r\n }\r\n //\r\n\r\n _activateDmChannel(channelId: string) {\r\n let chatRoomsChannelUsersObject =\r\n {\r\n \"channelId\": channelId,\r\n \"channelUserId\": this._authService._userInfo.sub,\r\n \"isActive\": true\r\n };\r\n this._apiCalls.putChatRoomsChannelUsers(chatRoomsChannelUsersObject)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this._getActiveDirectMessageList(); // refresh list may not be needed here \r\n // console.log(\"activate dm success\", res)\r\n this.clearFilter();\r\n } else {\r\n console.error(\"Post Channel\", res);\r\n }\r\n });\r\n }\r\n\r\n _deactivateDmChannel(channelId: string, i: number) {\r\n let chatRoomsChannelUsersObject =\r\n {\r\n \"channelId\": channelId,\r\n \"channelUserId\": this._authService._userInfo.sub,\r\n \"isActive\": false\r\n };\r\n this._apiCalls.putChatRoomsChannelUsers(chatRoomsChannelUsersObject)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this._getActiveDirectMessageList(); // may not need \r\n // console.log(\"de-activate dm success\", res)\r\n this.clearFilter();\r\n } else {\r\n console.error(\"Post Channel\", res);\r\n }\r\n });\r\n }\r\n\r\n archiveDirectMessage(e: any, channelId: string, i:number) {\r\n e.stopPropagation();\r\n this._deactivateDmChannel(channelId, i);\r\n // console.log(\"archiving message\", channelId)\r\n }\r\n\r\n closeSideBar() {\r\n // console.log(\"i close the sidebar\")\r\n this._channelService.sidebarChangeEvent(0);\r\n }\r\n\r\n // pinToggle() {\r\n // if (this.pinnedSideBar) {\r\n // this._channelService.sidebarPinEvent(false);\r\n // } else {\r\n // this._channelService.sidebarPinEvent(true);\r\n // }\r\n // }\r\n\r\n handleBrokenImage(idx:number): void {\r\n // console.info('yeeeeee')\r\n this.messageList[idx].hash = '1';\r\n }\r\n\r\n callTrigger() {\r\n // this._channelService.triggerAcceptCallModal(this.selectedChannel);\r\n this._channelService.callUsers(this.selectedChannel.channelId);\r\n this.closeSideBar();\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // TODO comment out all unused testing functions ... \r\n\r\n // getDirectMessageList() {\r\n // this.messageList = [\r\n // {\r\n // \"displayName\": faker.name.firstName() + \" \" + faker.name.lastName(),\r\n // \"hash\": \"1\", \r\n // \"profileImg\": faker.image.avatar(), \r\n // \"status\": \"online\",\r\n // \"channelId\": \"WviLRSjEQ\"\r\n // },\r\n // {\r\n // \"displayName\": faker.name.firstName() + \" \" + faker.name.lastName(),\r\n // \"hash\": \"1\",\r\n // \"profileImg\": faker.image.avatar(),\r\n // \"status\": \"busy\",\r\n // \"channelId\": \"aV3x9GF5q\"\r\n // }\r\n // ];\r\n // }\r\n","
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tDirect Messages\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{{ selectedChannel.channelName }}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ user.username | defaultImageOverlay }}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\"group\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{{ user.channelName }}\r\n\t\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tSent {{ user.unreadMessages }}{{ user.unreadMessages == 1 ? \" new message\" : \" new messages\" }}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\t{{ user.lastMessage.content | lastMessage }}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\tConversation started with {{ user.channelName }}\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t

\r\n\t\t\t\t{{\r\n\t\t\t\t\tuser.lastMessage\r\n\t\t\t\t\t\t? (user.lastMessage.when | timeAgo)\r\n\t\t\t\t\t\t: (user.dateCreated | timeAgo)\r\n\t\t\t\t}}\r\n\t\t\t

\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t{{\r\n\t\t\tisSearching\r\n\t\t\t\t? \"Could not find Direct Messages\"\r\n\t\t\t\t: \"You have not started any Direct Messages\"\r\n\t\t}}\r\n\t

\r\n\t\r\n\t\t\r\n\t\t {{ isSearching ? \"Searching messages...\" : \"Loading messages...\" }}\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n","import { UserProfile } from './user-profile';\r\nimport { SimpleClaim } from './simple-claim';\r\n\r\nexport class AuthContext {\r\n userProfile: UserProfile;\r\n claims: SimpleClaim[];\r\n\r\n get isAdmin() {\r\n return !!this.claims && !!this.claims.find(c =>\r\n c.type === 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' && c.value.toLowerCase() === 'admin');\r\n }\r\n\r\n get isManager() {\r\n return !!this.claims && !!this.claims.find(c =>\r\n c.type === 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' && c.value.toLowerCase() === 'manager');\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, Inject, OnDestroy, SimpleChanges, OnChanges } from '@angular/core';\r\n// import { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ChannelService } from '../services/channel-service';\r\nimport { fadeIn } from '../animations/global-animations';\r\nimport { AuthService } from '../core/auth.service';\r\nimport { Event as RouterEvent, Router, NavigationEnd } from '@angular/router';\r\nimport { consoleLogStyle } from '../shared/varaibles';\r\nimport { ChannelUser } from '../shared/interface/channel-user';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'navigation-overlay',\r\n templateUrl: './navigation-overlay.component.html',\r\n styleUrls: ['./navigation-overlay.component.scss'],\r\n animations: [fadeIn]\r\n})\r\nexport class NavigationOverlayComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n // @Input('currentTheme') currentTheme: string;\r\n @Input() userStatus: string;\r\n @Input() userInfo: ChannelUser;\r\n @Input() isGuest: boolean; // no nav buttons if guest\r\n\r\n // check these \r\n @Input() sideBarLocked: boolean;\r\n @Input() showUnlockedSidebar: boolean;\r\n @Output() sidebarOverlay = new EventEmitter();\r\n\r\n // ❌ check to be removed ... \r\n public showSideContainer: any; // sidebar element \r\n public showMessage: any; // sidebar element \r\n public showUser: any; // sidebar element \r\n // public lockSidebar: boolean = false;\r\n public displayingContainerView: boolean = false;\r\n public notificationBadge: boolean = false;\r\n public displayingMessageView: boolean = false;\r\n public displayingProfileView: boolean = false;//Not currently being used for anything\r\n // public showMenu: boolean = false;//Not using right now\r\n public rightBarNum: number = 0;\r\n public rightBarType: string = null;\r\n // \r\n\r\n public _isSignedIn: boolean = false;\r\n public messageBadge: boolean = false;\r\n \r\n // 🔎 search [💡 search not in use yet] ... \r\n // public loadingChannels: boolean = false;\r\n // public searchResultsIn: boolean = false;\r\n // public searchChannels = new Subject();\r\n // public searchChannelVariable: string = '';\r\n // public channelList: any[] = [];\r\n // public usersList: any[] = [];\r\n // public displaySearchInput: boolean = false;\r\n // \r\n public channelId: string; // for join/leave page ? \r\n public userStatusTitle: string;\r\n\r\n public currentRoute: string;\r\n public inChannel: boolean;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n public _authService: AuthService,\r\n // private _apiCalls: ApiCallsService,\r\n public _channelService: ChannelService,\r\n private _router: Router,\r\n // private _toast: ToastNotificationService,\r\n ) {\r\n this.subscriptions.push(this._authService.signInChanged$\r\n .subscribe(signedIn => {\r\n this._isSignedIn = signedIn;\r\n })\r\n );\r\n // 💡 search not in use yet ... \r\n // this.subscriptions.push(this._apiCalls.getChannelSearch(this.searchChannels)\r\n // .subscribe(data => {\r\n // this.channelList = [];\r\n // this.usersList = [];\r\n // if (!Array.isArray(data)) {\r\n // this.createChannelList(data);\r\n // }\r\n // else {\r\n // this.usersList = data;\r\n // this.searchResultsIn = true;\r\n // this.loadingChannels = false;\r\n // }\r\n // // console.log(data);\r\n // })\r\n // );\r\n this.subscriptions.push(this._channelService.onJoinedPageEvent$\r\n .subscribe((channelId: any) => {\r\n // console.log(\"JoinedPageEvent: \" + channelId);\r\n this.channelId = channelId;\r\n })\r\n );\r\n this.subscriptions.push(this._channelService.onDirectMessageNotificationEvent$\r\n .subscribe((showBadge: boolean) => {\r\n this.messageBadge = showBadge;\r\n })\r\n );\r\n\r\n // this.subscriptions.push(this._channelService.onUnreadDirectMessageNotification$\r\n // .subscribe(notiObj => {\r\n // console.log(\"navigation overlay unread message badge \" + notiObj.numUnreadMessages);\r\n // if (notiObj.numUnreadMessages > 0) {\r\n // if (!this.showUnlockedSidebar) {\r\n // this.messageBadge = true;\r\n // } else if (!this.displayingMessageView) {\r\n // this.messageBadge = true;\r\n // }\r\n // }\r\n // })\r\n // );\r\n\r\n this.subscriptions.push(this._channelService.onSidebarChangeEvent$\r\n .subscribe(data => {\r\n // console.log(\"onSidebarChangeEvent$\", data);\r\n this.setSidebar(data.num, data.type);\r\n })\r\n );\r\n\r\n this.subscriptions.push(this._channelService.onDirectMessageEmitEvent$\r\n .subscribe(() => {\r\n // console.log(\"sidebar triggered dm open --------------------\")\r\n this.rightBarNum = 2;\r\n this.showSidebar();\r\n })\r\n );\r\n this.subscriptions.push(this._router.events\r\n .subscribe((event: RouterEvent) => {\r\n // see also \r\n if (event instanceof NavigationEnd) {\r\n this.currentRoute = event.url.toLowerCase();\r\n this.inChannel = this.currentRoute.startsWith(\"/channel/\") ? true : false;\r\n // console.log(event);\r\n }\r\n })\r\n );\r\n } // end constructor \r\n\r\n\r\n ngOnInit() {\r\n // console.info(\"%c Auth UserInfo \", consoleLogStyle, this._authService._userInfo)\r\n this.showSideContainer = document.getElementById('side-container');\r\n this.showMessage = document.getElementById('side-message');\r\n this.showUser = document.getElementById('side-user');\r\n this.showSideContainer.style.display = 'none';\r\n this.showMessage.style.display = 'none';\r\n this.showUser.style.display = 'none';\r\n this.displayingContainerView = false;\r\n this.displayingMessageView = false;\r\n this.displayingProfileView = false;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.userStatus) {\r\n this.userStatusTitle = this.statusDisplay(changes.userStatus.currentValue);\r\n }\r\n if (changes.isGuest) {\r\n this.showSideContainer = document.getElementById('side-container');\r\n this.showMessage = document.getElementById('side-message');\r\n this.showUser = document.getElementById('side-user');\r\n this.showSideContainer ? this.showSideContainer.style.display = 'none' : null;\r\n this.showMessage ? this.showMessage.style.display = 'none' : null;\r\n this.showUser ? this.showUser.style.display = 'none' : null;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n // 🔎 search needs re-factor ... not in use ... \r\n // createChannelList(userWithChannels:any) {\r\n // // console.log(userWithChannels);\r\n // this.channelList = userWithChannels.chatRoomChatUsers.concat(userWithChannels.chatRoomChatUser1.filter((item) => userWithChannels.chatRoomChatUsers.indexOf(item) < 0));\r\n // this.loadingChannels = false;\r\n // this.searchResultsIn = true;\r\n // // console.log(this.channelList);\r\n // }\r\n\r\n // clearSearch() {\r\n // this.channelList = [];\r\n // this.loadingChannels = false;\r\n // this.searchResultsIn = false;\r\n // this.searchChannelVariable = '';\r\n // (document.getElementById(\"channelSearch\")).value = \"\";\r\n // }\r\n\r\n // quickSearchInUse() {\r\n // this.channelList = [];\r\n // var searchVal = (document.getElementById(\"channelSearch\")).value;\r\n // if (searchVal !== \"\") {\r\n // this.loadingChannels = true;\r\n // this.searchResultsIn = false;\r\n // } else {\r\n // this.loadingChannels = false;\r\n // this.searchResultsIn = false;\r\n // }\r\n // }\r\n\r\n // showSearchInput() {\r\n // this.displaySearchInput = (this.displaySearchInput) ? false : true;\r\n // }\r\n // \r\n\r\n // clickLink(link: string) {\r\n // this.router.navigate([link]);\r\n // // .then(() => {\r\n // // location.reload();// work around for component reload 😭 \r\n // // });\r\n // }\r\n\r\n // sidebar \r\n setSidebar(val: number, type?: string) {\r\n if (val === this.rightBarNum) {\r\n if (val === 1) {\r\n if (type === this.rightBarType) {\r\n this.rightBarNum = 0;\r\n } else {\r\n this.rightBarNum = val;\r\n }\r\n } else {\r\n this.rightBarNum = 0;\r\n }\r\n } else {\r\n this.rightBarNum = val;\r\n }\r\n if (type) {\r\n this.rightBarType = type;\r\n }\r\n this.showSidebar();\r\n }\r\n\r\n showSidebar() {\r\n let val = this.rightBarNum;\r\n // console.log(\"sidebar val: \", val)\r\n this.displayingContainerView = false;\r\n this.displayingMessageView = false;\r\n this.displayingProfileView = false;\r\n if (val > 0) {\r\n // this.sidebarOverlay.emit(true);\r\n this._channelService.sidebarDisplayEvent(true);\r\n if (val === 1) {\r\n this._channelService.sidebarAppSelectEvent(this.rightBarType);\r\n this.displayingContainerView = true;\r\n this.showSideContainer.style.display = null;\r\n this.showUser.style.display = 'none';\r\n this.showMessage.style.display = 'none';\r\n } else if (val === 2) {\r\n this.displayingMessageView = true;\r\n // this.messageBadge = false;\r\n this.showMessage.style.display = null;\r\n this.showUser.style.display = 'none';\r\n this.showSideContainer.style.display = 'none';\r\n } else if (val === 3) {\r\n this.displayingProfileView = true;\r\n this.showMessage.style.display = 'none';\r\n this.showUser.style.display = null;\r\n this.showSideContainer.style.display = 'none';\r\n }\r\n } else {\r\n // this.sidebarOverlay.emit(false);\r\n this._channelService.sidebarDisplayEvent(false);\r\n }\r\n if (!this._channelService._isDesktop) {\r\n // this.hideMenu();\r\n }\r\n }\r\n\r\n hideSideBar() {\r\n // this.sidebarOverlay.emit(false);\r\n this._channelService.sidebarDisplayEvent(false);\r\n }\r\n\r\n signIn() {\r\n this._authService.signIn();\r\n }\r\n\r\n signOut() {\r\n this._authService.signOut();\r\n }\r\n\r\n leave() {\r\n if (this.channelId !== null) {\r\n // console.log(\"leave navbar: \", this.channelId);\r\n this._channelService.sendCommand(\"/leave\", this.channelId);\r\n }\r\n // this.hideMenu();\r\n }\r\n\r\n statusDisplay(status: string) {\r\n if (status === \"offline\") {\r\n return \"Offline\";\r\n } else if (status === \"hidden\") {\r\n return \"Invisible\";\r\n } else if (status === \"away\") {\r\n return \"Away(AFK)\";\r\n } else if (status === \"active\") {\r\n return \"Active\";\r\n } else if (status === \"dnd\") {\r\n return \"Do Not Disturb\";\r\n } else if (status === \"brb\") {\r\n return \"Be Right Back\";\r\n }\r\n }\r\n\r\n // (hamburger menu) ... showMenu not used in template ... \r\n // displayMenu() {\r\n // this.showMenu = (this.showMenu) ? false : true;\r\n // }\r\n // hideMenu() {\r\n // this.showMenu = false;\r\n // }\r\n\r\n hideOverlay() {\r\n // this.hideMenu();\r\n this.setSidebar(0, null);\r\n }\r\n\r\n closeSideBar(e?:Event) {\r\n this.setSidebar(0, null);\r\n }\r\n\r\n // menuRoute(link) {\r\n // this.router.navigate([link]);\r\n // this.displayMenu();\r\n // }\r\n\r\n // 👮‍♂️ vdjj icon hov ... \r\n changeSVGIconFillEnter(e?: Event) {\r\n // console.log(e)\r\n let tar = document.getElementById('fa-hov-i');\r\n tar.style.fill = \"var(--color-secondary-text)\";\r\n }\r\n changeSVGIconFillLeave(e?: Event) {\r\n // console.log(e)\r\n let tar = document.getElementById('fa-hov-i');\r\n tar.style.fill = \"var(--color-primary-icon)\";\r\n }\r\n\r\n guestNavToMarketingSite() {\r\n let linkToMarketing = document.createElement('a');\r\n linkToMarketing.setAttribute('href', 'https://www.via3.com');\r\n linkToMarketing.setAttribute('target', '_blank');\r\n linkToMarketing.click();\r\n }\r\n\r\n handleBrokenImage() {\r\n // console.info('yeeeeee')\r\n this.userInfo.hash = '1';\r\n }\r\n}\r\n","
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n
\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"byteConvert\",\r\n})\r\nexport class ByteConvertPipe implements PipeTransform {\r\n transform(value: number): string {\r\n if (0 === value) {\r\n return \"0 Bytes\";\r\n } else if (value) {\r\n let decimal = 2;\r\n const newDecimal = 0 > decimal ? 0 : decimal;\r\n const newValue = Math.floor(Math.log(value) / Math.log(1024));\r\n return (\r\n parseFloat((value / Math.pow(1024, newValue)).toFixed(newDecimal)) + \" \" + [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"][newValue]\r\n );\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"channelCardAvatars\",\r\n})\r\nexport class ChannelCardAvitars implements PipeTransform {\r\n transform(value: any[]): any[] {\r\n // console.log(\" reverse pipe value, val.sli 0, 8 .rev ::::: \", value, value.slice(0, 9).reverse())\r\n return value.reverse();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'channelFolderPipe'\r\n})\r\nexport class ChannelFolderPipe implements PipeTransform {\r\n transform(value: string, channelName: any): any {\r\n if (value === \"/\") {\r\n if(channelName) {\r\n return channelName;\r\n } else {\r\n return 'Quick meeting';\r\n }\r\n } else {\r\n return value.slice(0, -1);\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"channelOwnerCompare\",\r\n})\r\nexport class ChannelOwnerComparePipe implements PipeTransform {\r\n transform(userId: string, owners: any[]): boolean {\r\n return owners.some(owner => owner.chatUserKeyNavigation.channelUserId === userId);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"checkInputLength\",\r\n})\r\nexport class CheckInputLengthPipe implements PipeTransform {\r\n transform(inputElId: string): boolean {\r\n // console.log('checking input length on -', inputElId)\r\n let search: HTMLInputElement = document.getElementById(inputElId);\r\n if(!!search) {\r\n if (search.value.length > 0) {\r\n // console.log('checking input length on -', inputElId, search.value.length)\r\n return true;\r\n } else {\r\n // console.log('checking input length on -', inputElId, 'no val')\r\n return false;\r\n }\r\n } else {\r\n console.log('checking input length on -', inputElId, 'no input to check')\r\n return false;\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'compareStrings'\r\n})\r\nexport class CompareStringsPipe implements PipeTransform {\r\n\r\n transform(string1: string, string2: string): boolean {\r\n if (string1 === string2) {\r\n return true;\r\n } else {\r\n return false;\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n// this returns the users initilals in uppercase \r\n\r\n// 💡 if is custom contact username will be the firstName second arg is lastName ... \r\n// example tenant user [ {{user.username | defaultImageOverlay}} ]\r\n// example custom contact [ {{user.firstName | defaultImageOverlay : user.lastName}} ]\r\n\r\n@Pipe({\r\n name: \"defaultImageOverlay\",\r\n})\r\nexport class DefaultImageOverlayPipe implements PipeTransform {\r\n transform(username: string, customContactLastName?: string): string {\r\n // console.info(\"username for pipe from message list\", username, customContactLastName)\r\n if(!username) return;\r\n // if(username.includes('Guest.')) return 'G';\r\n if(customContactLastName) { \r\n let result = username[0] + customContactLastName[0];\r\n return result.toLocaleUpperCase();\r\n \r\n } else { \r\n if(username.includes('.')) {\r\n let splitName = username.split('.');\r\n let result = splitName[0][0] + splitName[1][0];\r\n return result.toLocaleUpperCase();\r\n \r\n } else {\r\n return username[0].toLocaleUpperCase() + username[1].toLocaleUpperCase();\r\n }\r\n }\r\n }\r\n}\r\n\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"faxFolderName\",\r\n})\r\n\r\nexport class FaxFolderNamePipe implements PipeTransform {\r\n transform(value: string, args?: any): any {\r\n if (value === \"/\") {\r\n return \"My Faxes\";\r\n } else {\r\n return value;\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"fileName\",\r\n})\r\n\r\nexport class FileNamePipe implements PipeTransform {\r\n transform(value: string, args?: any): any {\r\n return value.substring(0, value.lastIndexOf(\".\"));\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"folderName\",\r\n})\r\n\r\nexport class FolderNamePipe implements PipeTransform {\r\n transform(value: string, args?: any): any {\r\n if (value === \"/\") {\r\n return \"Main\";\r\n } else {\r\n return value.slice(0, -1);\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"formatPhoneNumber\",\r\n})\r\n\r\nexport class FormatPhoneNumberPipe implements PipeTransform {\r\n transform(value: string, args?: any): any {\r\n var cleaned = ('' + value).replace(/\\D/g, '');\r\n var match = cleaned.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return [match[2], '-', match[3], '-', match[4]].join('');\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'highlight'\r\n})\r\n\r\nexport class HighlightSearch implements PipeTransform {\r\n\r\n transform(value: any, args: any): any {\r\n if (!args) {return value;}\r\n var re = new RegExp(args, 'gi'); //'gi' for case insensitive and can use 'g' if you want the search to be case sensitive.\r\n return value.replace(re, \"$&\");\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n name: \"lastMessage\"\r\n})\r\n\r\nexport class lastMessagePipe implements PipeTransform {\r\n transform(message: string, isSender?: boolean) {\r\n let content = \"\";\r\n let tempDivElement = document.createElement(\"div\");\r\n tempDivElement.innerHTML = message;\r\n content = tempDivElement.textContent || tempDivElement.innerText || \"\";\r\n // console.log(content);\r\n if (content) {\r\n return content;\r\n } else {\r\n return `${isSender ? \"You sent\" : \"Sent\"} a message`;\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"mediaWidthCheck\"\r\n})\r\n\r\n//only works for inital load\r\nexport class MediaWidthCheckPipe implements PipeTransform {\r\n transform(mediaWidth: number, lessThan?: boolean): boolean {\r\n let mediaQuery = window.matchMedia(`(max-width: ${mediaWidth - 1}px)`)\r\n if (mediaQuery.matches) {\r\n return lessThan ? true : false;\r\n } else {\r\n return lessThan ? false : true;\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'meetingDuration'\r\n})\r\nexport class MeetingDurationPipe implements PipeTransform {\r\n\r\n transform(value: number): string {\r\n if(value === 15) return '15 min';\r\n if(value === 30) return '30 min';\r\n if(value === 60) return '1 hr';\r\n if(value === 120) return '2 hrs';\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"messageWithImage\",\r\n})\r\n\r\nexport class MessageWithImagePipe implements PipeTransform {\r\n transform(value: string, args?: any): any {\r\n let urlObjects = this.urlExtractor(value);\r\n let newValue: any = value.split(\"\");\r\n for (let i = urlObjects.length - 1; i >= 0; i--) {\r\n let url = urlObjects[i].string;\r\n let aTag = ``;\r\n let aTagArray = aTag.split(\"\");\r\n newValue.splice(urlObjects[i].first, urlObjects[i].length, ...aTagArray);\r\n }\r\n return `${newValue.join(\"\")}`;\r\n }\r\n\r\n urlExtractor(string) {\r\n let expression = /(?:(?:https?|ftp):\\/\\/|www\\.)([\\w_-]+)([\\w.,{}@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?/gmi;\r\n let regex = new RegExp(expression);\r\n let result = string.matchAll(regex);\r\n let urlObjects = [];\r\n for (let match of result) {\r\n urlObjects.push({\r\n first: match.index, \r\n last: match.index + match[0].length,\r\n length: match[0].length,\r\n string: match[0]\r\n });\r\n }\r\n return urlObjects;\r\n }\r\n\r\n cleanURL(url: string) {\r\n let expression = /(http|ftp|https|):\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)?/ig;\r\n let regex = new RegExp(expression);\r\n\r\n if (url.match(regex)) {\r\n return url;\r\n } else {\r\n return 'https://' + url;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport * as SharedRegex from \"../shared/varaibles\";\r\n\r\n@Pipe({\r\n name: \"messageWithLinks\",\r\n})\r\n\r\nexport class MessageWithLinksPipe implements PipeTransform {\r\n transform(value: string, args?: any): any {\r\n let urlObjects = this.urlExtractor(value);\r\n if (urlObjects.length > 0) {\r\n let codeTagObjects = this.codeTagExtractor(value);\r\n let imgTagObjects = this.imgTagExtractor(value);\r\n let aTagObjects = this.aTagExtractor(value);\r\n // console.log(\"linksPipe\", [urlObjects, aTagObjects, imgTagObjects]);\r\n let newValue: any = value.split(\"\");\r\n for (let i = urlObjects.length - 1; i >= 0; i--) {\r\n if (\r\n !codeTagObjects.some(tag => this.rangeChecker(tag, urlObjects[i])) &&\r\n !imgTagObjects.some(tag => this.rangeChecker(tag, urlObjects[i])) &&\r\n !aTagObjects.some(tag => this.rangeChecker(tag, urlObjects[i]))\r\n ) {\r\n let url = urlObjects[i].urlString;\r\n let tag, tagArray;\r\n if (urlObjects[i].isImage) {\r\n tag = ``;\r\n // console.log(\"img tag: \", url)\r\n } else {\r\n tag = `${url}`;\r\n // console.log(\"a tag: \", url)\r\n }\r\n tagArray = tag.split(\"\");\r\n newValue.splice(urlObjects[i].first, urlObjects[i].length, ...tagArray);\r\n // console.log(\"did not match existing tags\");\r\n } else {\r\n // console.log(\"matched existing tags\");\r\n }\r\n }\r\n return newValue.join(\"\");\r\n } else {\r\n // console.log(\"No URL Objects: \", value)\r\n return value;\r\n }\r\n }\r\n\r\n urlExtractor(message) {\r\n let expression = SharedRegex.urlRegex;\r\n let regex = new RegExp(expression);\r\n let result = message.matchAll(regex);\r\n let urlObjects = [];\r\n for (let match of result) {\r\n urlObjects.push({\r\n first: match.index,\r\n last: match.index + match[0].length,\r\n length: match[0].length,\r\n urlString: match[0],\r\n isImage: this.checkImage(match[0])\r\n });\r\n }\r\n return urlObjects;\r\n }\r\n\r\n aTagExtractor(message) {\r\n let expression = SharedRegex.aTagFullRegex;\r\n let regex = new RegExp(expression);\r\n let result = message.matchAll(regex);\r\n let aTagObjects = [];\r\n for (let match of result) {\r\n aTagObjects.push({\r\n first: match.index,\r\n last: match.index + match[0].length,\r\n length: match[0].length,\r\n aTagString: match[0],\r\n });\r\n }\r\n return aTagObjects;\r\n }\r\n\r\n imgTagExtractor(message) {\r\n let expression = SharedRegex.imgTagRegex;\r\n let regex = new RegExp(expression);\r\n let result = message.matchAll(regex);\r\n let imgTagObjects = [];\r\n for (let match of result) {\r\n imgTagObjects.push({\r\n first: match.index,\r\n last: match.index + match[0].length,\r\n length: match[0].length,\r\n imgTagString: match[0],\r\n });\r\n }\r\n return imgTagObjects;\r\n }\r\n\r\n codeTagExtractor(message) {\r\n let expression = SharedRegex.codeTagRegex;\r\n let regex = new RegExp(expression);\r\n let result = message.matchAll(regex);\r\n let codeTagObjects = [];\r\n for (let match of result) {\r\n codeTagObjects.push({\r\n first: match.index,\r\n last: match.index + match[0].length,\r\n length: match[0].length,\r\n codeTagString: match[0],\r\n });\r\n }\r\n return codeTagObjects;\r\n }\r\n\r\n checkImage(message: string) {\r\n let imgExpression = /\\.(jpeg|jpg|gif|png)$/;\r\n let regex = new RegExp(imgExpression);\r\n if (message.match(regex)) {\r\n // console.log('IMAGE FOUND!', message);\r\n return true;\r\n } else {\r\n // console.log('IMAGE NOT FOUND!', message);\r\n return false;\r\n }\r\n };\r\n\r\n cleanURL(url: string) {\r\n let expression = /(http|ftp|https|):\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)?/ig;\r\n let regex = new RegExp(expression);\r\n\r\n if (url.match(regex)) {\r\n return url;\r\n } else {\r\n return 'https://' + url;\r\n }\r\n }\r\n\r\n rangeChecker(control, test): boolean {\r\n return control.first <= test.first && control.last >= test.last;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'quickmeetingChannelName'\r\n})\r\nexport class QuickmeetingChannelNamePipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n if(value === \"QuickMeetingApp\") {\r\n return \"Quick Meeting\";\r\n } else {\r\n return value;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: \"statusDisplay\",\r\n})\r\nexport class StatusDisplayPipe implements PipeTransform {\r\n transform(status: string, isTooltip?:boolean): string {\r\n // console.error(\"\") // should only check once \r\n if (status === \"online\" || status === \"active\") {\r\n return isTooltip ? 'online' : \"Online\";\r\n } else if (status === \"hidden\") {\r\n return isTooltip ? 'invisible' : \"Invisible\";\r\n } else if (status === \"offline\") {\r\n return isTooltip ? 'offline' : \"Offline\";\r\n } else if (status === \"dnd\") {\r\n return isTooltip ? 'do not disturb' : \"Do Not Disturb\";\r\n } else if (status === \"brb\") {\r\n return isTooltip ? 'be right back' : \"Be Right Back\";\r\n } else if (status === \"away\" || status === \"none\") {\r\n return isTooltip ? 'away' : \"Away\";\r\n }\r\n }\r\n}\r\n\r\n// statusDisplay(status) {\r\n// console.error(\"status logged\")// runs non stop\r\n// if (status === \"online\" || status === \"active\" || status === \"away\" || status === \"none\") {\r\n// return \"Online\";\r\n// } else if (status === \"hidden\") {\r\n// return \"Invisible\";\r\n// } else if (status === \"offline\") {\r\n// return \"Offline\";\r\n// } else if (status === \"dnd\") {\r\n// return \"Do Not Disturb\";\r\n// } else if (status === \"brb\") {\r\n// return \"Be Right Back\";\r\n// }\r\n// }\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'testListLength'\r\n})\r\nexport class TestListLengthPipe implements PipeTransform {\r\n\r\n transform(value: any[], multiplier: number): any[] {\r\n for(let i = 0; i < multiplier; i++) {\r\n value = value.concat(value)\r\n }\r\n console.log(\"test array multiplyed\", value)\r\n return value;\r\n }\r\n\r\n}\r\n","import {\r\n Pipe,\r\n PipeTransform,\r\n NgZone,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n} from \"@angular/core\";\r\nimport { consoleLogStyle } from \"../shared/varaibles\";\r\n\r\n@Pipe({\r\n name: \"timeAgo\",\r\n pure: false,\r\n})\r\nexport class TimeAgoPipe implements PipeTransform, OnDestroy {\r\n private timer: number;\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private ngZone: NgZone\r\n ) {}\r\n transform(value: string, isCountDown?:boolean): string {\r\n this.removeTimer();\r\n let d = new Date(value);\r\n // console.info(\"%c time ago value??? \", consoleLogStyle, d)\r\n let now = new Date();\r\n let seconds = Math.round(\r\n Math.abs((now.getTime() - d.getTime()) / 1000)\r\n );\r\n let timeToUpdate = Number.isNaN(seconds)\r\n ? 1000\r\n : this.getSecondsUntilUpdate(seconds) * 1000;\r\n this.timer = this.ngZone.runOutsideAngular(() => {\r\n if (typeof window !== \"undefined\") {\r\n return window.setTimeout(() => {\r\n this.ngZone.run(() =>\r\n this.changeDetectorRef.markForCheck()\r\n );\r\n }, timeToUpdate);\r\n }\r\n return null;\r\n });\r\n let minutes = Math.round(Math.abs(seconds / 60));\r\n let hours = Math.round(Math.abs(minutes / 60));\r\n let days = Math.round(Math.abs(hours / 24));\r\n let months = Math.round(Math.abs(days / 30.416));\r\n let years = Math.round(Math.abs(days / 365));\r\n if (Number.isNaN(seconds)) {\r\n return \"\";\r\n } else if (seconds <= 59) {\r\n return isCountDown ? seconds + \" seconds\" : \"now\";\r\n } else if (seconds >= 60 && minutes <= 59) {\r\n return isCountDown ? minutes + \" minutes\" : minutes + \"m\";\r\n } else if (minutes >= 60 && hours <= 23) {\r\n return isCountDown ? hours + \" hours\" : hours + \"h\";\r\n } else if (hours >= 24 && months <= 0) {\r\n return isCountDown ? days + \" days\" : days + \"d\";\r\n } else if (months >= 1 && months <= 11) {\r\n return isCountDown ? months + \" months\" : months + \"mo\";\r\n } else if (months >= 12) {\r\n return isCountDown ? years + \" years\" : years + \"y\";\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.removeTimer();\r\n }\r\n private removeTimer() {\r\n if (this.timer) {\r\n window.clearTimeout(this.timer);\r\n this.timer = null;\r\n }\r\n }\r\n private getSecondsUntilUpdate(seconds: number) {\r\n let min = 60;\r\n let hr = min * 60;\r\n let day = hr * 24;\r\n if (seconds < min) {\r\n // less than 1 min, update every 1 secs\r\n return 1;\r\n } else if (seconds < hr) {\r\n // less than an hour, update every 30 secs\r\n return 30;\r\n } else if (seconds < day) {\r\n // less then a day, update every 5 mins\r\n return 300;\r\n } else {\r\n // update every hour\r\n return 3600;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'userStatusName'\r\n})\r\nexport class UserStatusNamePipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n if(value === 'dnd') return 'do not disturb';\r\n if(value === 'brb') return 'be right back';\r\n return value;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Constants } from \"../constants\";\r\nimport { HttpClient, HttpHeaders, HttpResponse } from \"@angular/common/http\";\r\nimport { of, Observable, Subject } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\nimport { Alert, AlertSetting } from \"../shared/interface/alert\";\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class AlertsService {\r\n\r\n public _http: string = Constants.apiRoot;\r\n\r\n private onRemoveAlertEvent = new Subject();\r\n public onRemoveAlertEvent$ = this.onRemoveAlertEvent.asObservable();\r\n\r\n private onRemoveAllAlertsEvent = new Subject();\r\n public onRemoveAllAlertsEvent$ = this.onRemoveAllAlertsEvent.asObservable();\r\n\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n // get all alerts by user id \r\n getUserAlerts(channelUserId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'userNotifications/getNotifications/' + channelUserId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // \r\n deleteAlert(notificationId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}userNotifications/${notificationId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteAllAlerts(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}userNotifications/deleteAll/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // used to update an alert ... \r\n patchAlert(notificationId: string, alertObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let alertArr = [alertObj];\r\n return this.httpClient\r\n .patch(`${Constants.apiRoot}userNotifications/${notificationId}`, alertArr, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // alert SETTINGS ... \r\n getUserAlertSettings(channelUserId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'userNotificationSettings/' + channelUserId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // used to update an alert setting ... \r\n patchAlertSetting(alertId: string, alertSettingObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let alertSettingArr = [alertSettingObj];\r\n return this.httpClient\r\n .patch(`${Constants.apiRoot}userNotificationSettings/${alertId}`, alertSettingArr, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n removeAlert(notificationId:string, alertIdx: number) {\r\n let alertObj = {\r\n notificationId,\r\n alertIdx\r\n };\r\n // \r\n this.onRemoveAlertEvent.next(alertObj);\r\n }\r\n\r\n removeAllAlerts() {\r\n // \r\n this.onRemoveAllAlertsEvent.next();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, debounceTime, switchMap } from 'rxjs/operators';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { AuthService } from '../core/auth.service';\r\nimport { Constants } from '../constants';\r\nimport { DocumentToSign, User } from '../models/models';\r\nimport { ChannelCard } from '../shared/interface/channel-card';\r\nimport { Project } from '../shared/interface/project';\r\nimport { consoleLogStyle } from '../shared/varaibles';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiCallsService {\r\n public _http: string = Constants.apiRoot;\r\n public _user: any = this._authService._user;\r\n\r\n constructor(private httpClient: HttpClient, private _authService: AuthService) {\r\n this._authService.userChange$.subscribe(() => {\r\n this._user = this._authService._user;\r\n });\r\n }\r\n\r\n // FORMS & DOC SIGN APIS AT BOTTOM ... \r\n\r\n\r\n // Get Channel History [for home page column /w only 6 results] temp in lu of favs on homepage ... \r\n getChannelHistoryForChannelUserOnly6(channelUserId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + `channelHistory?chatUserId=${channelUserId}&pageSize=6`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // new full channel history /w pagination\r\n getChannelHistoryForChannelUserFullList(channelUserId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + `channelHistory?chatUserId=${channelUserId}&pageSize=24`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // new full channel favorites /w pagination\r\n getChannelFavoritesForChannelUser(channelUserId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + `channelHistory?chatUserId=${channelUserId}&pageSize=24&isFavorite=true`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // new channel by project\r\n getChannelsByProject(channelUserId: string, teamProjectIdId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + `channel/${channelUserId}/teamProject/${teamProjectIdId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // ⭐ all projects you created ... \r\n getAllProjects(tenant: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}teamProject?tenant=` + tenant, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // ⭐ get all projects by user id ... \r\n // returns all projects that you are a member/owner of channel ... \r\n getProjectsForChannelsPage(): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'teamproject/channelUser/' + this._authService._user.profile.sub, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postChannelHistoryForChannelUser(historyObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(this._http + 'channelHistory', historyObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n patchChannelHistoryForChannelUser(channelHistoryId: string, channelHistoryObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let channelHistoryArray = [channelHistoryObj];\r\n return this.httpClient\r\n .patch(this._http + 'channelHistory/' + channelHistoryId, channelHistoryArray, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Getting a user with all of their channels from Search\r\n getChannelSearch(searchEntry: Observable) {\r\n // console.log(\"%c channel search from navbar? \", consoleLogStyle, searchEntry)\r\n return searchEntry.pipe(debounceTime(200)) // ??? ...\r\n //.distinctUntilChanged()\r\n .pipe(switchMap(searchEntry => this.getChannelsWithSearchEntry(searchEntry)));\r\n }\r\n\r\n getChannelsWithSearchEntry(searchEntry: string) {\r\n if (!searchEntry) {\r\n // console.log(\"searchEntry is empty!\");\r\n return [];\r\n }\r\n return this.getUserWithSearchChannels(searchEntry);\r\n }\r\n\r\n getUserWithSearchChannels(searchEntry: string): Observable> {\r\n this._user = this._authService._user;\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'channelUser/channelSearch/' + this._user.profile.sub + '/' + searchEntry, { headers: headersConfig })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n \r\n getDirectChannelByTwoUsers(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'channel/getDirectByTwoUsers/' + userId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n // new from admin ... \r\n postProject(projectObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}teamProject/`, projectObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Getting a user with all of their channels \r\n getUsersChannels(): Observable> {\r\n this._user = this._authService._user;\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'channelUser/channels/' + this._user.profile.sub, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // using to get single channel by id in channel primary ... \r\n // need to add to any modal with channel info from card ... \r\n getChannel(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'channel/' + channelId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getChannelByName(channelName: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'channel?name=' + channelName, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n // console.log(err.name);\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getChannelByNameAndProjectId(channelName: string, teamProjectId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel?name=${channelName}&teamProjectId=${teamProjectId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n // console.log(err.name);\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postChannel(channelObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(this._http + 'channel/userCreateChannel', channelObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putChannel(channelId: string, channelObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(`${Constants.apiRoot}channel/` + channelId, channelObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n //Get Channel User With ChatUserId\r\n getChannelUserWithChatUserId(channelUserId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channelUser/${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Get User Profiles with User Id's\r\n getChannelUserProfileWithId(channelUserId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}profile/user/${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // My channel User\r\n getMyChannelUser(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channelUser/claimsUser`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Search Channel Users\r\n getChannelUsersBySearchQuery(queryString: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channelUser?searchQuery=${queryString}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getChannelUsersByTenantAndSearchQuery(tenant: string, queryString: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channelUser?tenant=${tenant}&searchQuery=${queryString}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n //Check if list of usernames, returns true usernames\r\n checkUsersExistByUsername(names: string[]): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}channelUser/checkUsersExist`, names, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Channel Owners/ chatRoomChatUsers\r\n getAllChannelOwners(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}chatRoomChatUsers`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postChannelOwner(ownerObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}chatRoomChatUsers`, ownerObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postBatchChannelOwners(ownersList: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}chatRoomChatUsers/batchCreate`, ownersList, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteChannelOwner(ownerObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let channelId = ownerObject.channelId;\r\n let channelUserId = ownerObject.channelUserId;\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}chatRoomChatUsers/${channelId}/${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getUserFaxAccounts(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel/fax/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postCreateUserFaxAccount(faxAccountObject: any) {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}faxAccounts`, faxAccountObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Channel Members/ chatRoomChatUser1\r\n postChannelMember(memberObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}chatRoomChatUser1`, memberObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putChatRoomsChannelUsers(chatRoomsChannelUsersObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(`${Constants.apiRoot}chatRoomChatUsers/`, chatRoomsChannelUsersObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postJitsiJwt(jitsiJwtObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}jitsiToken`, jitsiJwtObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getJitsiJwt(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}jitsiToken`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteChannelMember(memberObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let channelId = memberObject.channelId;\r\n let channelUserId = memberObject.channelUserId;\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}chatRoomChatUser1/${channelId}/${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Getting Channel Specific Messages\r\n // Initial Messages\r\n getInitialMessages(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'channelMessage?pageSize=15&channelId=' + channelId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // ❌ Additional Messages // this is not in use\r\n //getMoreMessages(channelId, firstMessageDate, page) {\r\n // return this.httpClient\r\n // .get(this._http + 'channelMessage?channelId=' + channelId + '&LoadDate=' + firstMessageDate + '&PageNumber=' + page, { observe: \"response\" });\r\n //}\t\r\n\r\n getTenants(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}tenant`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getProjectByName(projectName: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'teamProject/single/' + projectName, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Generic api call for pagination calls, will return based on pagination link (cote updated W/ pipe(err) && Return)\r\n getGenericForPagination(link: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(link, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // used to set guest display name \r\n patchChannelUser(userId: string, userObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let arr = [userObject];\r\n return this.httpClient\r\n .patch(this._http + 'channelUser/' + userId, arr, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // Sending a Support Ticket to Zen Desk using our API\r\n sendSupportTicket(supportObj: any): Observable> {\r\n supportObj.email = this._authService._user.profile.email;\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(this._http + 'supportTicket/open_ticket', supportObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getSupportTicket(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(this._http + 'supportTicket/externalId/' + this._authService._user.profile.sub, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n //Send fax API call\r\n postFaxApi(faxObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fax`, faxObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n //ReSend fax API call\r\n resendFaxApi(faxObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fax/resend`, faxObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getFaxApi(containerName: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}fax?pageSize=15&containerName=` + containerName, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteSentFax(sentFaxId: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}fax/${sentFaxId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n // console.log(err.name);\r\n return of(err);\r\n })\r\n );\r\n }\r\n // \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // FORMS & DOC SIGN APIS ... \r\n\r\n // getDocument(documentId:string) {\r\n // if (documentId === '1234') {\r\n // return this.document2;\r\n // }\r\n // // make API call to get document using the documentId\r\n // return this.document;\r\n // }\r\n\r\n // Online Forms\r\n // Build Online Form\r\n postCreateForm(formObject) {\r\n return this.httpClient.post(this._http + 'formTemplate/createForm', formObject, { observe: \"response\" });\r\n }\r\n // get online forms\r\n getOnlineForms() {\r\n return this.httpClient.get(this._http + 'formTemplate?pagesize=20', { observe: \"response\" });\r\n }\r\n getSpecificOnlineForms(formName: string) {\r\n return this.httpClient.get(this._http + 'formTemplate?FormName=' + formName, { observe: \"response\" });\r\n }\r\n getSpecificOnlineFormsForChannel(channelId: string) {\r\n return this.httpClient.get(this._http + 'chatRoomFormTemplate?ChannelId=' + channelId, { observe: \"response\" });\r\n }\r\n getChannelSpecificFormInstances(channelId: string) {\r\n return this.httpClient.get(this._http + 'formInstance?channelId=' + channelId, { observe: \"response\" });\r\n }\r\n // fill out online form\r\n postOnlineForm(responseObject) {\r\n return this.httpClient.post(this._http + 'formTemplate/submitForm', responseObject, { observe: \"response\" });\r\n }\r\n // get specific Form with form template id\r\n getOnlineFormByTemplateId(formTemplateId) {\r\n return this.httpClient.get(this._http + 'formTemplate/form/' + formTemplateId, { observe: \"response\" });\r\n }\r\n // get a form that was filled out\r\n getFormInstance(formTemplateId, formInstanceId) {\r\n return this.httpClient.get(this._http + 'formTemplate/filledOutForm/' + formTemplateId + '/' + formInstanceId, { observe: \"response\" });\r\n }\r\n\r\n // api call to upload files\r\n // needs error handling ...\r\n postFile(fileToUpload: File) {\r\n const endpoint = 'your-destination-url';\r\n const formData: FormData = new FormData();\r\n var headersConfig = new HttpHeaders();\r\n formData.append('fileKey', fileToUpload, fileToUpload.name);\r\n return this.httpClient\r\n .post(this._http + endpoint, formData, { headers: headersConfig });\r\n //.map(() => { return true; })\r\n //.catch((e) => this.handleError(e));\r\n }\r\n // api call to retrieve documents for a user\r\n getDocumentsForUser(userId) {\r\n var response = [];\r\n for (let doc of this.documentsForUser) {\r\n if (doc.userId === userId) {\r\n response.push(doc);\r\n }\r\n }\r\n return response;\r\n }\r\n setSignature(initials, signature) {\r\n // make api call to set the images of the initials and the signature\r\n // this._user.userInitialsUrl = \"../../assets/images/initials.png\";\r\n // this._user.userInitialsUrl = \"../../assets/images/signature.png\";\r\n this._user.userInitialsUrl = initials;\r\n this._user.userSignatureUrl = signature;\r\n // replace with the return statement of setting this to the api\r\n return true;\r\n }\r\n\r\n\r\n // \r\n\r\n public stuffAndThings = {\r\n \"entries\":\r\n [\r\n {\r\n \"name\": \"$DirectMessageChannels$\",\r\n \"id\": \"FiDUVlBVM2SZHXzXQWmZfg\",\r\n \"pathLower\": \"/$directmessagechannels$\",\r\n \"pathDisplay\": \"/$DirectMessageChannels$\",\r\n \"isFile\": false,\r\n \"isDeleted\": false,\r\n \"isRestored\": false,\r\n \"isRenamed\": false,\r\n \"hasSharedLink\": false\r\n }\r\n ]\r\n }\r\n\r\n\r\n public documentsForUser: any[] = [\r\n {\r\n 'documentId': '1234',\r\n 'date': '09-09-2019',\r\n 'name': 'contract for stuff',\r\n 'pages': '3',\r\n 'userId': '1234',\r\n 'complete': false\r\n },\r\n {\r\n 'documentId': '1235',\r\n 'date': '09-15-2019',\r\n 'name': 'more stuff in contract',\r\n 'pages': '6',\r\n 'userId': '1234',\r\n 'complete': false\r\n },\r\n {\r\n 'documentId': '1236',\r\n 'date': '09-02-2019',\r\n 'name': 'other things that are contract related',\r\n 'pages': '8',\r\n 'userId': '1235',\r\n 'complete': false\r\n }\r\n ];\r\n\r\n public fakeUser: User = {\r\n \"userId\": \"1234\",\r\n \"userInitialsUrl\": \"\",\r\n \"userSignatureUrl\": \"\",\r\n \"userFirstName\": \"Dan\",\r\n \"userMiddleName\": \"\",\r\n \"userLastName\": \"Enache\",\r\n \"userEmail\": \"calin121@gmail.com\"\r\n };\r\n\r\n // Client Customer ID should be the same as the userId\r\n public document: DocumentToSign = {\r\n \"documentId\": \"123\",\r\n \"clientCoName\": \"VideoNet\",\r\n \"clientEmployeeName\": \"Ben Leishman\",\r\n \"clientEmployeeEmail\": \"ben@leishman.co\",\r\n \"clientMessage\": \"Please sign the below items and get them back to me as soon as possible. The sooner we get these signed, the sooner we can get your money. -Ben\",\r\n \"clientCustomerName\": \"Dan Enache\",\r\n \"clientCustomerEmail\": \"calin121@gmail.com\",\r\n \"pages\":\r\n [\r\n {\r\n \"pageId\": \"page1\",\r\n \"imageUrl\": \"../../../assets/images/rule-of-thumb.png\",\r\n \"metadata\": {\r\n \"width\": \"600px\",\r\n \"heigth\": \"514px\",\r\n \"requestInputs\": [\r\n {\r\n \"inputId\": \"input1\",\r\n \"userId\": \"\",\r\n \"type\": \"initials\",\r\n \"x\": \"120px\",\r\n \"y\": \"312px\",\r\n \"height\": \"120px\",\r\n \"width\": \"140px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"\",\r\n },\r\n {\r\n \"inputId\": \"input2\",\r\n \"userId\": \"\",\r\n \"type\": \"signature\",\r\n \"x\": \"420px\",\r\n \"y\": \"422px\",\r\n \"height\": \"90px\",\r\n \"width\": \"160px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"\",\r\n },\r\n {\r\n \"inputId\": \"input3\",\r\n \"userId\": \"\",\r\n \"type\": \"text\",\r\n \"x\": \"120px\",\r\n \"y\": \"122px\",\r\n \"height\": \"30px\",\r\n \"width\": \"160px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"Does this work?\",\r\n },\r\n {\r\n \"inputId\": \"input4\",\r\n \"userId\": \"\",\r\n \"type\": \"name\",\r\n \"x\": \"10px\",\r\n \"y\": \"12px\",\r\n \"height\": \"30px\",\r\n \"width\": \"180px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"Does this work?\",\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n \"pageId\": \"page2\",\r\n \"imageUrl\": \"../../../assets/images/lola.jpg\",\r\n \"metadata\": {\r\n \"width\": \"1918px\",\r\n \"heigth\": \"1077px\",\r\n \"requestInputs\": [\r\n {\r\n \"inputId\": \"input1\",\r\n \"userId\": \"\",\r\n \"type\": \"signature\",\r\n \"x\": \"1520px\",\r\n \"y\": \"512px\",\r\n \"height\": \"90px\",\r\n \"width\": \"160px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"\",\r\n },\r\n {\r\n \"inputId\": \"input2\",\r\n \"userId\": \"\",\r\n \"type\": \"initials\",\r\n \"x\": \"1220px\",\r\n \"y\": \"322px\",\r\n \"height\": \"80px\",\r\n \"width\": \"130px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"\",\r\n }\r\n ]\r\n }\r\n },\r\n {\r\n \"pageId\": \"page3\",\r\n \"imageUrl\": \"../../../assets/images/documentImage.jpg\",\r\n \"metadata\": {\r\n \"width\": \"700px\",\r\n \"heigth\": \"906px\",\r\n \"requestInputs\": [\r\n {\r\n \"inputId\": \"input1\",\r\n \"userId\": \"\",\r\n \"type\": \"signature\",\r\n \"x\": \"320px\",\r\n \"y\": \"512px\",\r\n \"height\": \"90px\",\r\n \"width\": \"160px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"\",\r\n },\r\n {\r\n \"inputId\": \"input2\",\r\n \"userId\": \"\",\r\n \"type\": \"date\",\r\n \"x\": \"120px\",\r\n \"y\": \"322px\",\r\n \"height\": \"40px\",\r\n \"width\": \"120px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"\",\r\n },\r\n {\r\n \"inputId\": \"input3\",\r\n \"userId\": \"\",\r\n \"type\": \"email\",\r\n \"x\": \"20px\",\r\n \"y\": \"422px\",\r\n \"height\": \"40px\",\r\n \"width\": \"160px\",\r\n \"inputed\": false,\r\n \"inputImage\": \"\",\r\n \"value\": \"\",\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n };\r\n public document2: DocumentToSign = {\r\n \"documentId\": \"1234\",\r\n \"clientCoName\": \"VideoNet\",\r\n \"clientEmployeeName\": \"Ben Leishman\",\r\n \"clientEmployeeEmail\": \"ben@leishman.co\",\r\n \"clientMessage\": \"Please sign the below items and get them back to me as soon as possible. The sooner we get these signed, the sooner we can get your money. -Ben\",\r\n \"clientCustomerName\": \"Dan Enache\",\r\n \"clientCustomerEmail\": \"calin121@gmail.com\",\r\n \"pages\":\r\n [\r\n {\r\n \"pageId\": \"page1\",\r\n \"imageUrl\": \"../../../assets/images/AssignContract.png\",\r\n \"metadata\": {\r\n \"width\": \"789px\",\r\n \"heigth\": \"991px\",\r\n \"requestInputs\": [\r\n // {\r\n // \"inputId\": \"input3\",\r\n // \"userId\": \"\",\r\n // \"height\": \"60px\",\r\n // \"inputId\": \"input0\",\r\n // \"inputImage\": \"../../../assets/images/initialsImage.png\",\r\n // \"type\": \"signature\",\r\n // \"width\": \"60px\",\r\n // \"x\": \"340px\",\r\n // \"y\": \"340px\"\r\n // }\r\n ]\r\n }\r\n },\r\n {\r\n \"pageId\": \"page2\",\r\n \"imageUrl\": \"../../../assets/images/consultingContract.jpg\",\r\n \"metadata\": {\r\n \"width\": \"791px\",\r\n \"heigth\": \"1024px\",\r\n \"requestInputs\": [\r\n ]\r\n }\r\n },\r\n {\r\n \"pageId\": \"page3\",\r\n \"imageUrl\": \"../../../assets/images/employmentContract.png\",\r\n \"metadata\": {\r\n \"width\": \"728px\",\r\n \"heigth\": \"942px\",\r\n \"requestInputs\": [\r\n ]\r\n }\r\n }\r\n ]\r\n }\r\n\r\n public realUser = {\r\n \"Key\": \"99999\",\r\n \"UserId\": \"444EF335-EEF8-42B1-B686-5F3A35E258E4\",\r\n \"Tenant\": \"444EF335-EEF8-42B1-B686-5F3A35E258E4\",\r\n \"Username\": \"aaa444.bbb444\",\r\n \"DisplayName\": \"aaa444 bbb444\",\r\n \"DisplayLocation\": \"NULL\",\r\n \"Hash\": \"NULL\",\r\n \"LastActivity\": \"2018-01-02 01:34:38.5300107\",\r\n \"LastNudged\": \"NULL\",\r\n \"Status\": \"2\",\r\n \"Note\": \"NULL\",\r\n \"AfkNote\": \"NULL\",\r\n \"IsAfk\": \"0\",\r\n \"Flag\": \"NULL\",\r\n \"IsAdmin\": \"0\",\r\n \"IsBanned\": \"0\",\r\n \"RawPreferences\": \"NULL\",\r\n \"InVideoCall\": \"0\",\r\n \"InScreenShare\": \"0\",\r\n \"Phone\": \"NULL\",\r\n \"Title\": \"NULL\",\r\n \"Organization\": \"NULL\",\r\n \"Department\": \"NULL\",\r\n \"AllowFileStorageNotifications\": \"1\",\r\n \"AllowDirectMessageNotifications\": \"1\",\r\n \"AllowMentionsNotifications\": \"1\",\r\n \"AllowUnreadChannelMessageNotifications\": \"1\",\r\n \"AllowMissedCallNotifications\": \"1\",\r\n \"SendEmailInterval\": \"15\",\r\n \"NotificationKeywords\": \"NULL\",\r\n \"ThemeName\": \"NULL\",\r\n \"PromoCode\": \"NULL\"\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Constants } from '../constants';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { AuthService } from '../core/auth.service';\r\nimport { of, Observable } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppIntakeService {\r\n public userId: string = this._authService._user.profile.sub;\r\n // public VDJJAppId: string = \"cdbae327-32ed-4d65-9d11-dd8f9de86cbd\";\r\n // public VDJJAppProjectId: string = \"3F51BCB3-3127-433A-9BEA-209ECF358290\";\r\n // public VDJJSessionId: string = \"bdd46a6c-3d88-4d47-92ea-c62ad304c0bc\";\r\n public _isSignedIn = false;\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private _authService: AuthService\r\n ) {\r\n this._authService.userChange$.subscribe(() => {\r\n this.userId = this._authService._user.profile.sub;\r\n });\r\n }\r\n\r\n getAllIntakeUsers(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeUser`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeUserByChannelUserId(appId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeUser?chatUserId=${this.userId}&appId=${appId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeUserByChannelUserId2(userId: string, appId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeUser?chatUserId=${userId}&appId=${appId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // 🚧 returns if has medical | police ... [path will contain if (medical)] ... \r\n getIntakeUserByChannelUserId3(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeUser?chatUserId=${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeUser(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeUser/` + userId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeSession(intakeSessionId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSession/` + intakeSessionId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAllIntakeSessionUsers(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSessionUser`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAllIntakeSessionUsersBySession(intakeSessionId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSessionUser?intakeSessionId=${intakeSessionId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAllActiveIntakeSessionUsers(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSessionUser?active=true`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAllActiveIntakeSessionUsersBySession(intakeSessionId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSessionUser?intakeSessionId=${intakeSessionId}&active=true`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeSessionUserByIntakeUser(intakeId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSessionUser?intakeUserId=${intakeId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeSessionUserByIntakeUserAndActive(intakeId: string, intakeSessionId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSessionUser?intakeUserId=${intakeId}&active=true&intakeSessionId=${intakeSessionId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postIntakeSessionUser(userSessionObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}intakeSessionUser/`, userSessionObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putIntakeSessionUser(intakeId: string, userSessionObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(`${Constants.apiRoot}intakeSessionUser/`+ intakeId, userSessionObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteSessionIntakeUser(userSessionId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}intakeSessionUser/`+ userSessionId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAppCustomizations(appId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}appCustomization?appId=${appId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAllIntakeOfficerShiftLogs(intakeSessionId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeOfficerShiftLog?intakeSessionId=${intakeSessionId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAllOnShiftIntakeOfficerShiftLogs(intakeSessionId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeOfficerShiftLog?isOnShift=true&intakeSessionId=${intakeSessionId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeOfficerShiftLog(shiftLogId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeOfficerShiftLog/` + shiftLogId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeOfficerShiftLogByIntakeUser(intakeUserId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeOfficerShiftLog?intakeUserId=${intakeUserId}&pageSize=5`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postIntakeOfficerShiftLog(shiftLogObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}intakeOfficerShiftLog/`, shiftLogObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putIntakeOfficerShiftLog(shiftLogId: string, shiftLogObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(`${Constants.apiRoot}intakeOfficerShiftLog/` + shiftLogId, shiftLogObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteIntakeOfficerShiftLog(shiftLogId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}intakeOfficerShiftLog/` + shiftLogId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeSessionByAppId(appId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}intakeSession?appId=${appId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeApp(tenant: string, isMedical: boolean): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let chatName: string;\r\n if (isMedical) {\r\n // chatName = \"EMS\";\r\n chatName = \"\";\r\n } else {\r\n chatName = \"Video Intake\";\r\n }\r\n //console.log(tenant);\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}app?name=${tenant.toUpperCase()} ${chatName}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getIntakeGroupChatChannel(teamProjectId: string, isMedical: boolean): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let chatName: string;\r\n if (isMedical) {\r\n chatName = \"Staff Group Chat\";\r\n } else {\r\n chatName = \"Intake Officer Group Chat\";\r\n }\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel?name=${chatName}&teamProjectId=${teamProjectId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getEMSGroupChatChannel(teamProjectId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel?name=Staff Group Chat&teamProjectId=${teamProjectId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getVDJJApp(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}app?name=VDJJ Video Intake`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getVDJJAppCustomizations(appId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}appCustomization?appId=${appId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getVDJJProject(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}teamProject?name=VDJJIntakeApp`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getVDJJGroupChatChannel(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel?name=Intake Officer Group Chat`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Constants } from '../constants';\r\nimport { AuthService } from '../core/auth.service';\r\nimport * as signalr from '@microsoft/signalr';\r\nimport { Subject } from 'rxjs';\r\nimport { SocketsService } from './sockets.service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { ScreenCheck } from '../shared/functions';\r\nimport { consoleLogStyle } from '../shared/varaibles';\r\n\r\n//import { MessagePackHubProtocol } from '@microsoft/signalr-protocol-msgpack';\r\n\r\n@Injectable({\r\n providedIn: `root`\r\n})\r\nexport class ChannelService {\r\n // test: any = 2;\r\n\r\n isTyping: boolean = false;\r\n typingReset: boolean = false;\r\n public mytime;\r\n // private _channelId: any;\r\n // private _serverpath: any;\r\n private bearerToken;\r\n private _token;\r\n private _hubConnection: signalR.HubConnection;\r\n //private _transportType: any;\r\n private _initialized = false;\r\n private _stateChangePromise = Promise.resolve();\r\n private _joinedChannelMap = {};\r\n public _isDesktop: boolean;\r\n public _isMobileDevice: boolean;\r\n public socketServers: any = [];\r\n\r\n public useManagerSettings: boolean;//testing\r\n\r\n // private _messageSource = new Subject();\r\n private onConnectionEvent = new Subject();\r\n private onMessageToClientEvent = new Subject();\r\n private onJoinEvent = new Subject();\r\n private onJoinNotification = new Subject();\r\n private onJoinedPageEvent = new Subject();\r\n private isTypingEvent = new Subject();\r\n private onNudgeEvent = new Subject();\r\n private onHighFiveEvent = new Subject();\r\n private onThemeChangeEvent = new Subject();\r\n private onCallChannelEvent = new Subject();\r\n private onPerfTestEvent = new Subject();\r\n private onPopulateMessagesEvent = new Subject();\r\n private onPopulateMessagesEvent2 = new Subject();\r\n private onCallAcceptedEvent = new Subject();\r\n private onDeclineCallEvent = new Subject();\r\n private onReceiveOfferSignalEvent = new Subject();\r\n private onReceiveRtcCandidateSignalEvent = new Subject();\r\n private onReceiveRtcAnswerSignalEvent = new Subject();\r\n private onCallCreatedEvent = new Subject();\r\n private onWhoCommandEvent = new Subject();\r\n private onHangUpUserEvent = new Subject();\r\n private onCallErrorEvent = new Subject();\r\n private onRtcMaxAttendeeLimitReachedEvent = new Subject();\r\n private onRtcCallInProgressEvent = new Subject();\r\n private onUpdateUnreadMessageCountEvent = new Subject();\r\n private onSelectPoliceOfficerEvent = new Subject();\r\n private onUpdateUserStatusEvent = new Subject();\r\n private onUpdateSessionUsersEvent = new Subject();\r\n private onIntakeSessionEndedEvent = new Subject();\r\n private onSharedFileUploadCompletedEvent = new Subject();\r\n private onSharedFileDeleteCompletedEvent = new Subject();\r\n private onRtcAccepteeCallAcceptedEvent = new Subject();\r\n private onJoinAccessDeniedEvent = new Subject();\r\n private onShowBeginCallPromptEvent = new Subject();\r\n private onSharedFileBeginUploadEvent = new Subject();\r\n private onUserLeaveEvent = new Subject();\r\n private onLeaveRoomEvent = new Subject();\r\n private onBroadcastEvent = new Subject();\r\n private onStreamAddedEvent = new Subject();\r\n private onHubConnectionStateChangeEvent = new Subject();\r\n private onHandEvent = new Subject();\r\n private onUpdateMeetingListEvent = new Subject();\r\n private onUpdateChatComponentEvent = new Subject();\r\n private onDeleteMessagesPermissionDeniedEvent = new Subject();\r\n private onAddOwnerEvent = new Subject();\r\n private onAddMemberEvent = new Subject();\r\n private onRemoveMemberEvent = new Subject();\r\n private onRemoveOwnerEvent = new Subject();\r\n private onUpdateChannelHistoryEvent = new Subject();\r\n private onListOwnersOrMembersEvent = new Subject();\r\n private onUpdateDirectMessageListEvent = new Subject();\r\n private onJitsiSelfJoinEvent = new Subject();\r\n private onJitsiCallCreatedEvent = new Subject();\r\n private onJitsiCallPromptEvent = new Subject();\r\n private onJitsiCallAcceptedEvent = new Subject();\r\n private onJitsiHangUpUserEvent = new Subject();\r\n private onJitsiMaxAttendeeLimitReachedEvent = new Subject();\r\n private onJitsiHangUpLastUserEvent = new Subject();\r\n private onJitsiToggleRecordingEvent = new Subject();\r\n private onUpdateScheduleEvent = new Subject();\r\n private onGetChannelUsersInRoomEvent = new Subject();\r\n private onWhereEvent = new Subject();\r\n private onUnreadMessageNotificationEvent = new Subject();\r\n private onUnreadDirectMessageNotification = new Subject();\r\n private onDirectMessageNotificationEvent = new Subject();\r\n private onDirectMessageCloseEvent = new Subject();\r\n private onDirectMessageRedirectEvent = new Subject();\r\n private onPushDirectMessageToOverlayEvent = new Subject();\r\n private onNoClientErrorEvent = new Subject();\r\n private onGuestDisplayNameUpdatedEvent = new Subject();\r\n private onSidebarPinEvent = new Subject();\r\n private onSidebarDisplayEvent = new Subject();\r\n private onSidebarChangeEvent = new Subject();\r\n private onSidebarAppSelectEvent = new Subject();\r\n private onDirectMessageEmitEvent = new Subject();\r\n private onDirectMessageUpdateForSelfEvent = new Subject();\r\n private onHangUpCallEvent = new Subject();\r\n private onJitisiCallManagerEvent = new Subject();\r\n private onJitisiCallFailedEvent = new Subject();\r\n private onJitisiCallCancelledEvent = new Subject();\r\n private onJitisiCallResponseEvent = new Subject();\r\n // Observable string streams\r\n onConnectionEvent$ = this.onConnectionEvent.asObservable();\r\n onMessageToClientEvent$ = this.onMessageToClientEvent.asObservable();\r\n onJoinEvent$ = this.onJoinEvent.asObservable();\r\n isTypingEvent$ = this.isTypingEvent.asObservable();\r\n onNudgeEvent$ = this.onNudgeEvent.asObservable();\r\n onHighFiveEvent$ = this.onHighFiveEvent.asObservable();\r\n onThemeChangeEvent$ = this.onThemeChangeEvent.asObservable();\r\n onCallChannelEvent$ = this.onCallChannelEvent.asObservable();\r\n onPerfTestEvent$ = this.onPerfTestEvent.asObservable();\r\n onPopulateMessagesEvent$ = this.onPopulateMessagesEvent.asObservable();\r\n onPopulateMessagesEvent2$ = this.onPopulateMessagesEvent2.asObservable();\r\n onCallAcceptedEvent$ = this.onCallAcceptedEvent.asObservable();\r\n onDeclineCallEvent$ = this.onDeclineCallEvent.asObservable();\r\n onReceiveOfferSignalEvent$ = this.onReceiveOfferSignalEvent.asObservable();\r\n onReceiveRtcCandidateSignalEvent$ = this.onReceiveRtcCandidateSignalEvent.asObservable();\r\n onReceiveRtcAnswerSignalEvent$ = this.onReceiveRtcCandidateSignalEvent.asObservable();\r\n onCallCreatedEvent$ = this.onCallCreatedEvent.asObservable();\r\n onWhoCommandEvent$ = this.onWhoCommandEvent.asObservable();\r\n onHangUpUserEvent$ = this.onHangUpUserEvent.asObservable();\r\n onCallErrorEvent$ = this.onCallErrorEvent.asObservable();\r\n onRtcMaxAttendeeLimitReachedEvent$ = this.onRtcMaxAttendeeLimitReachedEvent.asObservable();\r\n onRtcCallInProgressEvent$ = this.onRtcCallInProgressEvent.asObservable();\r\n onUpdateUnreadMessageCountEvent$ = this.onUpdateUnreadMessageCountEvent.asObservable();\r\n onSelectPoliceOfficerEvent$ = this.onSelectPoliceOfficerEvent.asObservable();\r\n onUpdateUserStatusEvent$ = this.onUpdateUserStatusEvent.asObservable();\r\n onUpdateSessionUsersEvent$ = this.onUpdateSessionUsersEvent.asObservable();\r\n onIntakeSessionEndedEvent$ = this.onIntakeSessionEndedEvent.asObservable();\r\n onSharedFileDeleteCompletedEvent$ = this.onSharedFileDeleteCompletedEvent.asObservable();\r\n onSharedFileUploadCompletedEvent$ = this.onSharedFileUploadCompletedEvent.asObservable();\r\n onRtcAccepteeCallAcceptedEvent$ = this.onRtcAccepteeCallAcceptedEvent.asObservable();\r\n onJoinAccessDeniedEvent$ = this.onJoinAccessDeniedEvent.asObservable();\r\n onShowBeginCallPromptEvent$ = this.onShowBeginCallPromptEvent.asObservable();\r\n onSharedFileBeginUploadEvent$ = this.onSharedFileBeginUploadEvent.asObservable();\r\n onJoinNotification$ = this.onJoinNotification.asObservable();\r\n onJoinedPageEvent$ = this.onJoinedPageEvent.asObservable();\r\n onUserLeaveEvent$ = this.onUserLeaveEvent.asObservable();\r\n onLeaveRoomEvent$ = this.onLeaveRoomEvent.asObservable();\r\n onBroadcastEvent$ = this.onBroadcastEvent.asObservable();\r\n onStreamAddedEvent$ = this.onStreamAddedEvent.asObservable();\r\n onHubConnectionStateChangeEvent$ = this.onHubConnectionStateChangeEvent.asObservable();\r\n onHandEvent$ = this.onHandEvent.asObservable();\r\n onUpdateMeetingListEvent$ = this.onUpdateMeetingListEvent.asObservable();\r\n onUpdateChatComponentEvent$ = this.onUpdateChatComponentEvent.asObservable();\r\n onDeleteMessagesPermissionDeniedEvent$ = this.onDeleteMessagesPermissionDeniedEvent.asObservable();\r\n onAddOwnerEvent$ = this.onAddOwnerEvent.asObservable();\r\n onAddMemberEvent$ = this.onAddMemberEvent.asObservable();\r\n onRemoveMemberEvent$ = this.onRemoveMemberEvent.asObservable();\r\n onRemoveOwnerEvent$ = this.onRemoveOwnerEvent.asObservable();\r\n onUpdateChannelHistoryEvent$ = this.onUpdateChannelHistoryEvent.asObservable();\r\n onListOwnersOrMembersEvent$ = this.onListOwnersOrMembersEvent.asObservable();\r\n onUpdateDirectMessageListEvent$ = this.onUpdateDirectMessageListEvent.asObservable();\r\n onJitsiSelfJoinEvent$ = this.onJitsiSelfJoinEvent.asObservable();\r\n onJitsiCallCreatedEvent$ = this.onJitsiCallCreatedEvent.asObservable();\r\n onJitsiCallPromptEvent$ = this.onJitsiCallPromptEvent.asObservable();\r\n onJitsiCallAcceptedEvent$ = this.onJitsiCallAcceptedEvent.asObservable();\r\n onJitsiHangUpUserEvent$ = this.onJitsiHangUpUserEvent.asObservable();\r\n onJitsiMaxAttendeeLimitReachedEvent$ = this.onJitsiMaxAttendeeLimitReachedEvent.asObservable();\r\n onJitsiHangUpLastUserEvent$ = this.onJitsiHangUpLastUserEvent.asObservable();\r\n onJitsiToggleRecordingEvent$ = this.onJitsiToggleRecordingEvent.asObservable();\r\n onUpdateScheduleEvent$ = this.onUpdateScheduleEvent.asObservable();\r\n onGetChannelUsersInRoomEvent$ = this.onGetChannelUsersInRoomEvent.asObservable();\r\n onWhereEvent$ = this.onWhereEvent.asObservable();\r\n onUnreadMessageNotificationEvent$ = this.onUnreadMessageNotificationEvent.asObservable();\r\n onUnreadDirectMessageNotification$ = this.onUnreadDirectMessageNotification.asObservable();\r\n onDirectMessageNotificationEvent$ = this.onDirectMessageNotificationEvent.asObservable();\r\n onDirectMessageCloseEvent$ = this.onDirectMessageCloseEvent.asObservable();\r\n onDirectMessageRedirectEvent$ = this.onDirectMessageRedirectEvent.asObservable();\r\n onPushDirectMessageToOverlayEvent$ = this.onPushDirectMessageToOverlayEvent.asObservable();\r\n onNoClientErrorEvent$ = this.onNoClientErrorEvent.asObservable();\r\n onGuestDisplayNameUpdatedEvent$ = this.onGuestDisplayNameUpdatedEvent.asObservable();\r\n onSidebarPinEvent$ = this.onSidebarPinEvent.asObservable();\r\n onSidebarDisplayEvent$ = this.onSidebarDisplayEvent.asObservable();\r\n onSidebarChangeEvent$ = this.onSidebarChangeEvent.asObservable();\r\n onSidebarAppSelectEvent$ = this.onSidebarAppSelectEvent.asObservable();\r\n onDirectMessageEmitEvent$ = this.onDirectMessageEmitEvent.asObservable();\r\n onDirectMessageUpdateForSelfEvent$ = this.onDirectMessageUpdateForSelfEvent.asObservable();\r\n onHangUpCallEvent$ = this.onHangUpCallEvent.asObservable();\r\n onJitisiCallManagerEvent$ = this.onJitisiCallManagerEvent.asObservable();\r\n onJitisiCallFailedEvent$ = this.onJitisiCallFailedEvent.asObservable();\r\n onJitisiCallCancelledEvent$ = this.onJitisiCallCancelledEvent.asObservable();\r\n onJitisiCallResponseEvent$ = this.onJitisiCallResponseEvent.asObservable();\r\n\r\n\r\n constructor(\r\n private _authService: AuthService,\r\n private _socketService: SocketsService,\r\n public _toastService: ToastNotificationService\r\n ) {\r\n if (\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) ||\r\n /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.platform)\r\n ) {\r\n this._isMobileDevice = true;\r\n this._isDesktop = false;\r\n } else {\r\n this._isMobileDevice = false;\r\n this.screenChangeEvent();\r\n }\r\n }\r\n\r\n public _getActiveSocketServers(): Promise {\r\n return this._socketService.getActiveSocketServers()\r\n .toPromise()\r\n .then(data => {\r\n this.socketServers = data.body;\r\n return this.socketServers;\r\n })\r\n .catch(error => console.error(`Could not get socket server, ${error}`));\r\n }\r\n\r\n public Initialize = () => {\r\n return this._getActiveSocketServers().then(socketServers => {\r\n let activeSocketServer = socketServers[0];\r\n\r\n return this._authService.getAccessToken().then(token => {\r\n return this.waitForStates().then(() => token);\r\n }).then(token => {\r\n if (true === this._initialized) {\r\n return;\r\n }\r\n\r\n this._token = token;\r\n\r\n if (!this._token) {\r\n if (!this._hubConnection) {\r\n //Only show alert if we have never had a hub connection since someone with a hubconnection\r\n //would already be logged in.\r\n alert(\"User is not signed in.\");\r\n }\r\n return;\r\n }\r\n\r\n this._hubConnection = new signalr.HubConnectionBuilder()\r\n .withUrl(`${activeSocketServer.serverPath}channelhub?clientversion=3.0.0.0`,\r\n {\r\n accessTokenFactory: () => this.bearerToken = this._token,\r\n transport: signalr.HttpTransportType.WebSockets | signalr.HttpTransportType.LongPolling\r\n })\r\n //.configureLogging(signalr.LogLevel.Trace)\r\n //.configureLogging(signalr.LogLevel.Warning)\r\n //.configureLogging(signalr.LogLevel.Information)\r\n .configureLogging(signalr.LogLevel.Debug)\r\n .withAutomaticReconnect([0, 10000, 20000, 30000])\r\n //.AddJsonProtocol(options => {\r\n // options.PayloadSerializerOptions.WriteIndented = false;\r\n //})\r\n\r\n .build();\r\n this._hubConnection.keepAliveIntervalInMilliseconds = 1000 * 60 * 1; //1 minute keepalive\r\n this._hubConnection.serverTimeoutInMilliseconds = 1000 * 60 * 15; // 15 minutes\r\n\r\n this.assignHandlers();\r\n this._stateChangePromise = this._hubConnection.start();\r\n return this._stateChangePromise.then(() => {\r\n // console.log(\"connected\");\r\n this._initialized = true;\r\n this.onHubConnectionStateChangeEvent.next(\"connected\");\r\n });\r\n });\r\n });\r\n }\r\n\r\n private waitForStates = () => {\r\n //We want to wait for either start/stop to be finished or fail. Sometimes when we cannot connect, the\r\n //promises will end up rejecting. We should catch the error when trying to join a channel or send requests out.\r\n //Until we get a more organized way of using the channel service across all the components.\r\n return !this._hubConnection ? Promise.resolve() : this._stateChangePromise.catch(() => { });\r\n }\r\n\r\n private assignHandlers = () => {\r\n this._hubConnection.on('ChannelNudge', () => {\r\n this.onNudgeEvent.next();\r\n });\r\n\r\n this._hubConnection.on('HighFive', (displayname: any) => {\r\n this.onHighFiveEvent.next(displayname);\r\n });\r\n\r\n this._hubConnection.on('Hand', (displayName: any) => {\r\n this.onHandEvent.next(displayName);\r\n })\r\n\r\n this._hubConnection.on('ChannelMessage', (message: any) => {\r\n //console.log(\"Channel Message\", message);\r\n //console.log(\"service \", message);\r\n this.onMessageToClientEvent.next(message);\r\n });\r\n\r\n this._hubConnection.on(\"UpdateDirectMessageForSelf\", (message: any) => {\r\n this.onDirectMessageUpdateForSelfEvent.next(message);\r\n })\r\n\r\n this._hubConnection.on('PopulateMessages', (message: any) => {\r\n //console.log(\"PopulateMessage Service \" + message.message);\r\n this.onPopulateMessagesEvent.next(message);\r\n });\r\n\r\n this._hubConnection.on(\"Joined\", () => {\r\n // console.log(\"Joined Service\");\r\n this.onJoinEvent.next();\r\n //alert(\"Joined service\");\r\n })\r\n\r\n this._hubConnection.on(\"JoinNotification\", (joinObj: any) => {\r\n this.onJoinNotification.next(joinObj);\r\n //alert(\"Joined service\");\r\n })\r\n\r\n this._hubConnection.on(\"JoinedPage\", (channelId: any) => {\r\n this.onJoinedPageEvent.next(channelId);\r\n })\r\n\r\n this._hubConnection.on(\"typingNotification\", (message: any) => {\r\n // this.messages.push(message);\r\n //this.typingReset = true;\r\n //clearTimeout(this.mytime);\r\n //console.log(\"typingNotification\");\r\n this.isTypingEvent.next(message);\r\n //this.mytime = setTimeout(() => {\r\n // this.typingReset = false;\r\n // this.isTypingEvent.next(this.typingReset);\r\n\r\n //}, 3000);\r\n });\r\n\r\n this._hubConnection.on(\"SetTheme\", () => {\r\n //console.log(themeName);\r\n // alert(\"settheme channel service\");\r\n this.onThemeChangeEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"onPerfTest\", (perfObj: any) => {\r\n this.onPerfTestEvent.next(perfObj);\r\n })\r\n\r\n this._hubConnection.on(\"incomingCallEvent\", (callObj: any) => {\r\n //alert(\"incomingCallEvent \" + callObj.channelId);\r\n this.onCallChannelEvent.next(callObj);\r\n })\r\n\r\n this._hubConnection.on(\"onWhoCommand\", (whoObj: any) => {\r\n this.onWhoCommandEvent.next(whoObj);\r\n })\r\n\r\n this._hubConnection.on(\"rtcCallAccepted\", (acceptingCalleeDto: any) => {\r\n // console.log(\"Answer Call event listener: \" + acceptingCalleeDto.clientId);\r\n this.onCallAcceptedEvent.next(acceptingCalleeDto);\r\n })\r\n\r\n this._hubConnection.on(\"rtcDeclineCall\", (userId: any) => {\r\n // console.log(\"Reject Call event listener\");\r\n this.onDeclineCallEvent.next(userId);\r\n })\r\n\r\n this._hubConnection.on(\"rtcHangUpUser\", () => {\r\n // console.log(\"rtchangupuser next\");\r\n this.onHangUpUserEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"RtcReceiveOfferSignal\", (offerObj: any) => {\r\n // console.log(\"RTC receive offer signal event listener: \");\r\n this.onReceiveOfferSignalEvent.next(offerObj);\r\n })\r\n\r\n this._hubConnection.on(\"rtcReceiveCandidateSignal\", (candidateObj: any) => {\r\n // console.log(\"rtcReceiveCandidateSignal event listener service\");\r\n this.onReceiveRtcCandidateSignalEvent.next(candidateObj);\r\n })\r\n\r\n this._hubConnection.on(\"rtcReceiveAnswerSignal\", (answerObj: any) => {\r\n //console.log(\"rtcReceiveAnswerSignal event listener service \" + JSON.stringify(answerObj.answer));\r\n //(\"receive answer signal service\");\r\n this.onReceiveRtcAnswerSignalEvent.next(answerObj);\r\n })\r\n\r\n this._hubConnection.on(\"rtcCallCreated\", (callId: any) => {\r\n this.onCallCreatedEvent.next(callId);\r\n })\r\n\r\n this._hubConnection.on(\"rtcCallEnded\", () => {\r\n this.onCallErrorEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"rtcMaxAttendeeLimitReached\", () => {\r\n this.onRtcMaxAttendeeLimitReachedEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"rtcCallInProgress\", () => {\r\n this.onRtcCallInProgressEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"RtcAccepteeCallAccepted\", () => {\r\n //alert(\"rtcaccepteecallacceptedservice\");\r\n this.onRtcAccepteeCallAcceptedEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"updateUserStatus\", (channelUserStatusList: any) => {\r\n this.updateUserStatus(channelUserStatusList);\r\n })\r\n\r\n this._hubConnection.on(\"updateIntakeSessionUsers\", () => {\r\n //alert(\"channel service update intake session users\");\r\n this.onUpdateSessionUsersEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"intakeSessionEnded\", (channelId: any) => {\r\n this.onIntakeSessionEndedEvent.next(channelId);\r\n })\r\n\r\n this._hubConnection.on(\"sharedFileUploadCompleted\", (fileUploadObj: any) => {\r\n // console.log(\"Shared File Next .... \", fileUploadObj);\r\n this.onSharedFileUploadCompletedEvent.next(fileUploadObj);\r\n })\r\n\r\n this._hubConnection.on(\"sharedFileDeleteCompleted\", (fileDeleteObj: any) => {\r\n this.onSharedFileDeleteCompletedEvent.next(fileDeleteObj);\r\n })\r\n\r\n this._hubConnection.on(\"sharedFileBeginUpload\", (channelId: any) => {\r\n this.onSharedFileBeginUploadEvent.next(channelId);\r\n })\r\n\r\n this._hubConnection.on(\"onJoinAccessDenied\", () => {\r\n this.onJoinAccessDeniedEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"ShowBeginCallPrompt\", (channelId: any) => {\r\n this.onShowBeginCallPromptEvent.next(channelId);\r\n })\r\n\r\n this._hubConnection.on(\"UserLeaveNotification\", (userObj: any) => {\r\n this.onUserLeaveEvent.next(userObj);\r\n })\r\n\r\n this._hubConnection.on(\"LeaveRoom\", () => {\r\n this.onLeaveRoomEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"OnBroadcastCommand\", (data: any) => {\r\n this.onBroadcastEvent.next(data);\r\n })\r\n\r\n this._hubConnection.on(\"RtcAddStream\", (stream: any) => {\r\n this.onStreamAddedEvent.next(stream);\r\n })\r\n\r\n // i need data returned here ... \r\n this._hubConnection.on(\"UpdateUpcomingMeetingsList\", (data) => {\r\n // console.log(\"%c UpdateUpcomingMeetingsList channelservice\", consoleLogStyle,data);\r\n this.onUpdateMeetingListEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"UpdateChatComponent\", (channelId: any) => {\r\n this.onUpdateChatComponentEvent.next(channelId);\r\n })\r\n\r\n this._hubConnection.on(\"DeleteMessagesPermissionDenied\", () => {\r\n this.onDeleteMessagesPermissionDeniedEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"AddOwner\", (username: any) => {\r\n this.onAddOwnerEvent.next(username);\r\n })\r\n\r\n this._hubConnection.on(\"AddMember\", (username: any) => {\r\n this.onAddMemberEvent.next(username);\r\n })\r\n\r\n this._hubConnection.on(\"RemoveMember\", (username: any) => {\r\n this.onRemoveMemberEvent.next(username);\r\n })\r\n\r\n this._hubConnection.on(\"RemoveOwner\", (username: any) => {\r\n this.onRemoveOwnerEvent.next(username);\r\n })\r\n\r\n this._hubConnection.on(\"UpdateChannelHistory\", () => {\r\n this.onUpdateChannelHistoryEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"ListOwnersOrMembers\", (usernames: any) => {\r\n this.onListOwnersOrMembersEvent.next(usernames);\r\n })\r\n\r\n this._hubConnection.on(\"UpdateDirectMessageList\", () => {\r\n this.onUpdateDirectMessageListEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"JitsiCallCreated\", (callId: any) => {\r\n // console.log(\"jitsicallcreated next\");\r\n // console.log(\"jitsicallcreated callId: \" + callId);\r\n this.onJitsiCallCreatedEvent.next(callId);\r\n })\r\n\r\n this._hubConnection.on(\"IncomingJitsiCallEvent\", (callObj: any) => {\r\n // console.log(\"jitsicallprompt next\");\r\n this.onJitsiCallPromptEvent.next(callObj);\r\n })\r\n\r\n this._hubConnection.on(\"JitsiCallAccepted\", () => {\r\n this.onJitsiCallAcceptedEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"JitsiHangUpUser\", () => {\r\n this.onJitsiHangUpUserEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"JitsiHangUpLastUser\", () => {\r\n this.onJitsiHangUpLastUserEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"JitsiMaxAttendeeLimitReached\", () => {\r\n this.onJitsiMaxAttendeeLimitReachedEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"JitsiToggleRecording\", (disableRecording: any) => {\r\n this.onJitsiToggleRecordingEvent.next(disableRecording);\r\n })\r\n\r\n this._hubConnection.on(\"UpdateSchedule\", () => {\r\n this.onUpdateScheduleEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"GetChannelUsersInRoom\", () => {\r\n // console.log(\"onGetChannelUsersInRoomEvent next\");\r\n this.onGetChannelUsersInRoomEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"Where\", (usernamesList: any) => {\r\n this.onWhereEvent.next(usernamesList);\r\n })\r\n\r\n this._hubConnection.on(\"UnreadMessageNotification\", (notiObj: any) => {\r\n this.onUnreadMessageNotificationEvent.next(notiObj);\r\n })\r\n\r\n this._hubConnection.on(\"UnreadDirectMessageNotification\", (notiObj: any) => {\r\n this.onUnreadDirectMessageNotification.next(notiObj);\r\n })\r\n\r\n this._hubConnection.on(\"NoClientError\", () => {\r\n this.onNoClientErrorEvent.next();\r\n })\r\n\r\n this._hubConnection.on(\"UpdateGuestDisplayName\", (channelId: any) => {\r\n this.guestDisplayNameUpdatedEvent(channelId);\r\n })\r\n\r\n //Call users\r\n this._hubConnection.on(\"CallUsersSend\", (callObj) => {\r\n this.onJitisiCallManagerEvent.next(callObj);\r\n })\r\n\r\n this._hubConnection.on(\"CallFailedSend\", (channelId) => {\r\n this.onJitisiCallFailedEvent.next(channelId);\r\n })\r\n\r\n this._hubConnection.on(\"CallCancelledSend\", (channelId) => {\r\n this.onJitisiCallCancelledEvent.next(channelId);\r\n })\r\n\r\n this._hubConnection.on(\"CallResponseSend\", (callObj) => {\r\n this.onJitisiCallResponseEvent.next(callObj);\r\n })\r\n //\r\n\r\n this._hubConnection.onclose((error) => {\r\n let state = \"disconnected\";\r\n this.onHubConnectionStateChangeEvent.next(state);\r\n this._initialized = false;\r\n return this.restartHubConnection();\r\n })\r\n\r\n this._hubConnection.onreconnecting((error) => {\r\n // console.log(\"Connection started reconnecting due to an error: \" + error);\r\n let state = \"reconnecting\";\r\n this.onHubConnectionStateChangeEvent.next(state);\r\n //this._toastService.error(\"Connection lost due to error. Attempting to reconnect.\");\r\n })\r\n\r\n this._hubConnection.onreconnected((connectionId: any) => {\r\n // console.log(\"reconnected \" + connectionId);\r\n let state = \"connected\";\r\n this.onHubConnectionStateChangeEvent.next(state);\r\n this._toastService.info(\"Connection reestablished.\");\r\n // console.log(\"onreconnected channelId: \" + this._channelId + \" serverpath: \" + this._serverpath);\r\n return this.rejoinChannels();\r\n })\r\n\r\n \r\n }\r\n\r\n private restartHubConnection = () => {\r\n return this.waitForStates()\r\n .then(() => this.Initialize())\r\n .then(() => this.rejoinChannels())\r\n .catch(error => {\r\n console.error(`Could not restart hubconnection, ${error}`);\r\n setTimeout(() => this.restartHubConnection(), 10 * 1000);\r\n });\r\n }\r\n\r\n private rejoinChannels = () => {\r\n let channelsToRejoin = Object.keys(this._joinedChannelMap);\r\n let joinPromises = channelsToRejoin.map(channelId => this.join(channelId)\r\n .catch(error => {\r\n console.error(`Could not rejoin channel ${channelId}, ${error.message}`);\r\n })\r\n );\r\n return Promise.all(joinPromises);\r\n }\r\n\r\n // calls channelHub\r\n public sendMessageToChannel = (message: any, channelId: any) => {\r\n //console.log(\"sendtochannel service \" + channelId + \" \" + message);\r\n\r\n const data = `${message}`;\r\n\r\n var msg = message.split(' ');\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n if (msg[0].toLowerCase() === \"/nudge\") {\r\n this._hubConnection.invoke('SendCommand', \"/nudge\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/highfive\") {\r\n this._hubConnection.invoke('SendCommand', \"/highfive\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/shrug\") {\r\n this._hubConnection.invoke('SendCommand', \"/shrug\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/perftest\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/perftest\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/who\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/who\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/broadcast\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/broadcast\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/topic\") {\r\n this._hubConnection.invoke(\"SendCommand\", message, channelId);\r\n } else if (msg[0].toLowerCase() === \"/leave\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/leave\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/hand\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/hand\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/deleteall\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/deleteall\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/addmember\") {\r\n this._hubConnection.invoke(\"SendCommand\", message, channelId);\r\n } else if (msg[0].toLowerCase() === \"/addowner\") {\r\n this._hubConnection.invoke(\"SendCommand\", message, channelId);\r\n } else if (msg[0].toLowerCase() === \"/removemember\") {\r\n this._hubConnection.invoke(\"SendCommand\", message, channelId);\r\n } else if (msg[0].toLowerCase() === \"/removeowner\") {\r\n this._hubConnection.invoke(\"SendCommand\", message, channelId);\r\n } else if (msg[0].toLowerCase() === \"/owners\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/owners\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/members\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/members\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/where\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/where\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/who\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/who\", channelId);\r\n } else if (msg[0].toLowerCase() === \"/brb\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/brb\", \"status\");\r\n } else if (msg[0].toLowerCase() === \"/dnd\" || msg[0].toLowerCase() === \"/busy\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/dnd\", \"status\");\r\n } else if (msg[0].toLowerCase() === \"/online\" || msg[0].toLowerCase() === \"/active\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/online\", \"status\");\r\n } else if (msg[0].toLowerCase() === \"/invisible\") {\r\n this._hubConnection.invoke(\"SendCommand\", \"/invisible\", \"status\");\r\n } else {\r\n // console.log(\"****Message sent****\");\r\n this._hubConnection.invoke('Send', data, channelId);\r\n }\r\n }\r\n else {\r\n // console.log(\"Signalr hub not in connected state\");\r\n this._toastService.error(\"Your session has expired. Please refresh the page.\");\r\n }\r\n }\r\n\r\n public sendCommand = (message: any, channelId: any) => {\r\n //console.log(\"sendcommand service \" + channelId + \" \" + message);\r\n const data = `${message}`;\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke('SendCommand', message, channelId);\r\n }\r\n }\r\n\r\n public sendMessageToClient(message: any, channelId: any): void {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke('SendMessageToClient', 'Ben', message, channelId);\r\n }\r\n }\r\n\r\n public sendMessageToChannelJSON(content: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke('SendJSON', JSON.stringify(content), channelId);\r\n }\r\n }\r\n\r\n public typingEvent = (channelId: any) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"Typing\", channelId);\r\n }\r\n }\r\n\r\n public join = (channelId: any) => {\r\n //if (!channelId) {\r\n // return;\r\n //}\r\n // console.log(\"join channelId\", channelId);\r\n return this.waitForStates()\r\n .then(() => {\r\n this._hubConnection.invoke(\"Join\", channelId);\r\n // console.log(\"invoke\")\r\n this._joinedChannelMap[channelId] = true;\r\n // console.log(`Joined channel ${channelId}`);\r\n }).catch(error => console.error(`Could not join channel, ${error}`));\r\n }\r\n\r\n public leave = (channelId: any) => {\r\n return this.waitForStates().then(() => {\r\n return this._hubConnection.invoke(\"SendCommand\", \"/leave\", channelId);\r\n }).then(() => {\r\n delete this._joinedChannelMap[channelId];\r\n // console.log(`Left channel ${channelId}`);\r\n });\r\n }\r\n\r\n public setTheme = () => {\r\n //console.log(\"set theme service\");\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/theme\", \"\");\r\n } else {\r\n // alert(\"No hub connection\");\r\n }\r\n\r\n //this._hubConnection.invoke(\"SendCommand\", \"/\" + themeName, \"\");\r\n }\r\n\r\n //public getAllChannelMessages(fullChannelName: any) {\r\n // if (this._hubConnection) {\r\n // console.log(\"getAllMessages Service\");\r\n // this._hubConnection.invoke(\"GetAllChannelMessages\", fullChannelName);\r\n // }\r\n //}\r\n\r\n public rtcCallChannel = (includeVideo: any, channelId: any) => {\r\n //alert(channelId);\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"rtcCallChannel service\");\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtccallchannel \" + includeVideo, channelId);\r\n }\r\n }\r\n\r\n public rtcAcceptCall = (includeVideo: any, channelId: any, callId: any, callInitializer: any, initiatorClientId: any, initiatorConnectionId: any) => {\r\n // console.log(\"rtcAcceptCall service \" + initiatorClientId);\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtccallaccepted \" + includeVideo + \" \" + callId + \" \"\r\n + callInitializer.userId + \" \" + initiatorClientId + \" \" + initiatorConnectionId, channelId);\r\n }\r\n }\r\n\r\n public rtcDeclineCall = (channelId: any, callId: any, initiatorClientId: any) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtccalldeclined \" + callId + \" \" + initiatorClientId, channelId);\r\n }\r\n }\r\n\r\n public rtcHangUpUser = (channelId: any, callId: any) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"Hangupuser service\");\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtchangupuser \" + callId, channelId);\r\n }\r\n }\r\n\r\n public RTCSendOfferSignal = (acceptingCalleeConnectionId: any, offer: any, channelId: any) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"RTC Send Offer Signal Service\");\r\n //console.log(JSON.stringify(localDescription));\r\n //this._hubConnection.invoke(\"SendCommand\", \"/rtcsendoffersignal \" + acceptingCalleeClientId +\r\n // \" \" + localDescription, channelId);\r\n\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtcsendoffersignal \" + acceptingCalleeConnectionId + \" \" + offer, channelId);\r\n }\r\n }\r\n\r\n public RTCSendCandidateSignal = (connectionId: any, securityToken: any, candidate: any, channelId: any) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"RTC Send Candidate Signal Service \" + JSON.stringify(candidate));\r\n\r\n //this._hubConnection.invoke(\"SendCommand\", \"/rtcsendcandidatesignal \" + clientId +\r\n // \" \" + securityToken + \" \" + candidate, channelId);\r\n\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtcsendcandidatesignal \" + connectionId + \" \" + candidate, channelId);\r\n }\r\n }\r\n\r\n public RTCSendAnswerSignal = (connnectionId: any, answer: any, securityToken: any, channelId: any) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"RTC Send Answer Signal Service \" + JSON.stringify(answer));\r\n\r\n //this._hubConnection.invoke(\"SendCommand\", \"/rtcsendanswersignal \" + clientId + \" \" +\r\n // securityToken + \" \" + localDescription, channelId);\r\n\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtcsendanswersignal \" + connnectionId + \" \" + securityToken + \" \" + answer, channelId);\r\n }\r\n }\r\n\r\n public populateMessages(channelId: string) {\r\n //alert(\"channel service populate \" + channelId);\r\n this.onPopulateMessagesEvent2.next(channelId);\r\n }\r\n\r\n public updateUnreadMessageCount(messageChannelId: any) {\r\n this.onUpdateUnreadMessageCountEvent.next(messageChannelId);\r\n }\r\n\r\n public onSelectPoliceOfficer(selectedChannelId: any) {\r\n //alert(selectedChannelId);\r\n this.onSelectPoliceOfficerEvent.next(selectedChannelId);\r\n }\r\n\r\n public updateUserStatus(channelUserStatusList: any) {\r\n this.onUpdateUserStatusEvent.next(channelUserStatusList);\r\n }\r\n\r\n public updateUserStatusOnLogin(channelUserId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n alert(\"hub connection exists\");\r\n } else {\r\n alert(\"no hub connection\");\r\n }\r\n }\r\n\r\n public postIntakeSessionUser(notificationForm: any, appId: any, url: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"postIntakeUserSession channel-service\");\r\n // console.log(notificationForm)\r\n //var startSessioArgs = {\r\n // \"intakeUserId\" : notificationForm.intakeUserId,\r\n // \"displayName\": notificationForm.displayName,\r\n // \"email\": notificationForm.email,\r\n // \"SMSNumber\" : notificationForm.SMSNumner\r\n //};\r\n\r\n //this._hubConnection.invoke(\"SendCommand\", \"/startsession \" + JSON.stringify(startSessioArgs), notificationForm.chatRoomId)\r\n this._hubConnection.invoke(\"SendCommand\", \"/startsession \" + notificationForm.intakeUserId + \" \" + notificationForm.intakeSessionId +\r\n \" \" + url + \" \" + appId + \" \" + notificationForm.displayName, notificationForm.chatRoomId)\r\n }\r\n }\r\n\r\n public deleteIntakeSessionUser(intakeSessionUserId: any, appId: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/endsession \" + intakeSessionUserId + \" \" + appId, channelId);\r\n //console.log(\"session ended > sigR emit ❓\")\r\n }\r\n }\r\n\r\n public sharedFileUploadComplete(url: any, filename: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/sharedfileuploadcomplete \" + url + \" \" + filename, channelId);\r\n }\r\n }\r\n\r\n public sharedFileDeleteComplete(channelId: any, filename?: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/sharedfiledeletecomplete \" + filename, channelId);\r\n }\r\n }\r\n\r\n public sharedFileBeginUpload(channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/sharedfilebeginupload\", channelId);\r\n }\r\n }\r\n\r\n public onShowBeginCallPrompt(channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/showbegincallprompt\", channelId);\r\n }\r\n //this.onShowBeginCallPromptEvent.next(channelId);\r\n }\r\n\r\n public broadcast(data: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"broadcast\" + JSON.stringify(data));\r\n // console.log(channelId);\r\n this._hubConnection.invoke(\"SendCommand\", \"/broadcast \" + data, channelId);\r\n }\r\n }\r\n\r\n public onStreamAdded(addTrackObj: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"onstreamadded service \" + JSON.stringify(event));\r\n this._hubConnection.invoke(\"SendCommand\", \"/rtcaddstream \" + addTrackObj.partnerClientId + \" \" + addTrackObj.event.streams[0], channelId);\r\n }\r\n }\r\n\r\n // should this update home page meetings ???????\r\n public updateUpcomingMeetingsList(meetingId: any, isNewMeeting: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"updateUpcomingMeetingList FROM SERVICE meetingId: \" + meetingId + \" channelId: \" + channelId);\r\n this._hubConnection.invoke(\"SendCommand\", \"/updateUpcomingMeetingsList \" + meetingId + \" \" + isNewMeeting, channelId);\r\n }\r\n }\r\n\r\n public updateDirectMessageList(channelId: any, newChannel: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/updatedirectmessagelist \" + newChannel, channelId);\r\n }\r\n }\r\n\r\n public JitsiCallChannel(channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"channelservice jitsicallchannel\");\r\n this._hubConnection.invoke(\"SendCommand\", \"/jitsicallchannel \", channelId);\r\n } else {\r\n this._toastService.error(\"Your session has expired. please refresh the page.\");\r\n }\r\n }\r\n\r\n public JitsiAcceptCall(callId: any, channelId: any, initiatorClientId: any, initiatorConnectionId: any, initiatorUserId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/jitsiacceptcall \" + callId + \" \" + initiatorClientId + \" \" + initiatorConnectionId + \" \" + initiatorUserId, channelId);\r\n }\r\n }\r\n\r\n public JitsiHangUpUser(callId: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"JitsiHangUpUser callId: \" + callId + \"channelId: \" + channelId);\r\n this._hubConnection.invoke(\"SendCommand\", \"/jitsihangupuser \" + callId, channelId);\r\n }\r\n }\r\n\r\n public onJitsiToggleRecordingButton(disableRecording: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/jitsitogglerecording \" + disableRecording, channelId);\r\n }\r\n }\r\n\r\n public onJitsiStopRecordingEvent(channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/jitsistoprecording \", channelId);\r\n }\r\n }\r\n\r\n public UpdateSchedule(appId: any, channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/updateschedule \" + appId, channelId);\r\n }\r\n }\r\n\r\n public directMessageNotificationEvent(showBadge: boolean) {\r\n this.onDirectMessageNotificationEvent.next(showBadge);\r\n }\r\n\r\n public closeDirectMessage() {\r\n this.onDirectMessageCloseEvent.next();\r\n }\r\n\r\n public redirectDirectMessage(channelId: string, channelName: string, userId: string = null) {\r\n // console.log(\"re-direct dm {channel name} & {userId}\", channelId, channelName, userId)\r\n this.onDirectMessageRedirectEvent.next({\r\n channelId: channelId,\r\n channelName: channelName,\r\n userId: userId //used for creating a new DM directly to this userId\r\n });\r\n }\r\n\r\n public pushDirectMessageToOverlay(channelId: string) {\r\n // console.log(\"Channel ID Sent from Overlay: \" + channelId);\r\n this.onPushDirectMessageToOverlayEvent.next(channelId)\r\n }\r\n\r\n public updateLastActivity(channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/updatelastactivity\", channelId);\r\n }\r\n }\r\n\r\n public guestDisplayNameUpdated(channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"SendCommand\", \"/updateguestdisplayname\", channelId);\r\n }\r\n }\r\n\r\n public guestDisplayNameUpdatedEvent(channelId: any) {\r\n // console.log(\"guestDisplayNameUpdated next\");\r\n this.onGuestDisplayNameUpdatedEvent.next(channelId);\r\n }\r\n\r\n public updateChannelUsersInRoomEvent(channelId: any) {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // console.log(\"updateChannelUsersInRoomEvent invoke\");\r\n this._hubConnection.invoke(\"SendCommand\", \"/updatechannelusersinroom\", channelId);\r\n }\r\n }\r\n\r\n public jitsiSelfJoinEvent(channelId: string) {\r\n this.onJitsiSelfJoinEvent.next(channelId);\r\n }\r\n\r\n public sidebarPinEvent(isPinned: boolean) {\r\n this.onSidebarPinEvent.next(isPinned);\r\n }\r\n\r\n public sidebarDisplayEvent(show: boolean) {\r\n this.onSidebarDisplayEvent.next(show);\r\n }\r\n\r\n public sidebarChangeEvent(num: number, type: string = null) {\r\n this.onSidebarChangeEvent.next({ num: num, type: type });\r\n }\r\n\r\n public sidebarAppSelectEvent(val: string) {\r\n // console.log(val);\r\n this.onSidebarAppSelectEvent.next(val);\r\n }\r\n\r\n public directMessageEmitEvent() {\r\n // console.log(\"dm emit event...\")\r\n this.onDirectMessageEmitEvent.next();\r\n }\r\n\r\n public screenChangeEvent() {\r\n //560 is phablet && and mobile screen break\r\n this._isDesktop = ScreenCheck(560);\r\n }\r\n\r\n public hangUpCallEvent() {\r\n this.onHangUpCallEvent.next();\r\n }\r\n\r\n public disconnectSigR() {\r\n this._hubConnection.stop();\r\n }\r\n\r\n\r\n //New for Calling\r\n public triggerAcceptCallModal(channel: any) {\r\n this.onJitisiCallManagerEvent.next(channel);\r\n }\r\n\r\n public callUsers = (channelId: string) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n this._hubConnection.invoke(\"CallUsers\", channelId);\r\n }\r\n }\r\n\r\n public callFailed = (channelId: string) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // alert(\"Call Canceled\");\r\n this._hubConnection.invoke(\"CallFailed\", channelId);\r\n }\r\n }\r\n\r\n public callCancelled = (channelId: string) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // alert(\"Call Canceled\");\r\n this._hubConnection.invoke(\"CallCancelled\", channelId);\r\n }\r\n }\r\n\r\n public callResponse = (channelId: string, hasAccepted: boolean) => {\r\n if (this._hubConnection.state == signalr.HubConnectionState.Connected) {\r\n // alert(\"Call Denied\");\r\n this._hubConnection.invoke(\"CallResponse\", channelId, hasAccepted);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Constants } from '../constants';\r\nimport { IApps } from './apps';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, retry } from 'rxjs/operators';\r\nimport { resolve } from 'q';\r\nimport { Subject } from 'rxjs';\r\nimport { ChannelService } from './channel-service';\r\n\r\n\r\n@Injectable()\r\nexport class ConnectionManagerService {\r\n\r\n private _iceServers = {};\r\n private _mediaStream: any;\r\n private _channelId: any;\r\n private _connections = {};\r\n private _acceptingCalleeDto: any;\r\n\r\n private _offerOptions = {\r\n offerToReceiveAudio: 1,\r\n offerToReceiveVideo: 1\r\n };\r\n\r\n private onStreamAddedEvent = new Subject();\r\n\r\n onStreamAddedEvent$ = this.onStreamAddedEvent.asObservable();\r\n\r\n private onStreamRemovedEvent = new Subject();\r\n\r\n onStreamRemovedEvent$ = this.onStreamAddedEvent.asObservable();\r\n\r\n\r\n constructor(\r\n private _channelService: ChannelService,\r\n private http: HttpClient) { }\r\n\r\n\r\n public initialize(iceServers: any, mediaStream: any, channelId: any) {\r\n //alert(\"connection manager service initialize\");\r\n this._iceServers = iceServers;\r\n this._mediaStream = mediaStream;\r\n this._channelId = channelId;\r\n\r\n }\r\n\r\n public getIceSettings() {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.http\r\n .get(`${Constants.apiRoot}icesetting?enabled=true`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n public setConstraints(includeVideo: any, videoDevice: any, height: any, width: any, audioDevice: any) {\r\n let constraints: any;\r\n\r\n if (true === includeVideo) {\r\n constraints = {\r\n audio: {\r\n deviceId: audioDevice,\r\n googEchoCancellation: true,\r\n googAutoGainControl: true,\r\n googNoiseSuppression: true,\r\n googHighpassFilter: true,\r\n googNoiceSuppression2: true,\r\n googEchoCancellation2: true,\r\n googAutoGainControl2: true\r\n\r\n },\r\n video: {\r\n // deviceId: { exact: videoDevice },\r\n deviceId: videoDevice,\r\n width: {\r\n min: 320,\r\n ideal: width,\r\n max: 3840\r\n },\r\n height: {\r\n min: 240,\r\n ideal: height,\r\n max: 2160\r\n },\r\n frameRate: {\r\n min: 15,\r\n ideal: 30,\r\n max: 60 \r\n },\r\n aspectRatio: 1.777777778\r\n }\r\n };\r\n } else {\r\n constraints = {\r\n audio: true,\r\n video: false\r\n };\r\n }\r\n\r\n return constraints;\r\n }\r\n\r\n public setVideoConstraints(includeVideo: any, videoDevice: any, height: any, width: any) {\r\n let constraints: any;\r\n\r\n if (true === includeVideo) {\r\n constraints = {\r\n video: {\r\n // deviceId: { exact: videoDevice },\r\n deviceId: videoDevice,\r\n width: {\r\n min: 320,\r\n ideal: width,\r\n max: 3840\r\n },\r\n height: {\r\n min: 240,\r\n ideal: height,\r\n max: 2160\r\n },\r\n frameRate: {\r\n min: 15,\r\n ideal: 30,\r\n max: 60 \r\n },\r\n aspectRatio: 1.777777778\r\n }\r\n };\r\n } else {\r\n constraints = {\r\n video: false\r\n };\r\n }\r\n\r\n return constraints;\r\n }\r\n\r\n public setAudioConstraints(audioDevice: any) {\r\n let constraints = {\r\n audio: {\r\n deviceId: audioDevice,\r\n googEchoCancellation: true,\r\n googAutoGainControl: true,\r\n googNoiseSuppression: true,\r\n googHighpassFilter: true,\r\n googNoiceSuppression2: true,\r\n googEchoCancellation2: true,\r\n googAutoGainControl2: true\r\n\r\n }\r\n }\r\n return constraints;\r\n }\r\n\r\n\r\n public createConnection(partnerClientId, securityToken) {\r\n var pc = new RTCPeerConnection(this._iceServers);\r\n\r\n pc.onicecandidate = (e) => {\r\n\r\n if (e.candidate) {\r\n console.log(\"create connection candidate \" + JSON.stringify(e.candidate));\r\n //this._channelService.RTCSendCandidateSignal(partnerClientId, securityToken, JSON.stringify({ \"candidate\": e.candidate }), this._channelId);\r\n this._channelService.RTCSendCandidateSignal(partnerClientId, securityToken, JSON.stringify(e.candidate), this._channelId);\r\n } else {\r\n console.debug(\"Ice candidate gathering complete\");\r\n }\r\n }\r\n\r\n\r\n pc.onconnectionstatechange = () => {\r\n var states = {\r\n \"iceConnectionState\": pc.iceConnectionState,\r\n \"iceGatheringState\": pc.iceGatheringState,\r\n \"connectionState\": pc.connectionState,\r\n \"signalingState\": pc.signalingState\r\n };\r\n console.debug(JSON.stringify(states));\r\n }\r\n\r\n pc.ontrack = (event: any) => {\r\n console.log(\"create connection ontrack \" + JSON.stringify(event));\r\n var addTrackObj = {\r\n \"pc\": pc,\r\n \"event\": event,\r\n \"partnerClientId\": partnerClientId\r\n };\r\n //this.onStreamAddedEvent.next(addTrackObj);\r\n this._channelService.onStreamAdded(addTrackObj, this._channelId);\r\n }\r\n\r\n pc.removeTrack = (e) => {\r\n var removeTrackObj = {\r\n \"pc\": pc,\r\n \"partnerClientId\": partnerClientId\r\n };\r\n this.onStreamRemovedEvent.next(removeTrackObj);\r\n }\r\n\r\n this._connections[partnerClientId] = pc;\r\n\r\n return pc;\r\n }\r\n\r\n public newSignal = async (callerClientId, localDescription, securityToken) => {\r\n console.log(\"newsignal localdesc: \" + localDescription);\r\n console.log(\"newsignal callerclientid: \" + callerClientId);\r\n var signal = JSON.parse(localDescription);\r\n console.log(\"signal: \" + JSON.stringify(signal));\r\n var connection = this.getConnection(callerClientId, securityToken);\r\n\r\n if (signal.sdp) {\r\n //alert(\"signal.sdp\");\r\n this.receivedSdpSignal(connection, callerClientId, signal.sdp, this._mediaStream, securityToken);\r\n\r\n } else {\r\n this.receivedCandidateSignal1(connection, JSON.stringify({ \"candidate\": signal.candidate }));\r\n }\r\n }\r\n\r\n private receivedSdpSignal = (connection: any, clientId: any, sdp: any, mediaStream: any, securitToken: any) => {\r\n console.log(\"receivedSdpSignal\");\r\n connection.setRemoteDescription(new RTCSessionDescription(sdp))\r\n .then(() => {\r\n console.log(\"connection remotedescription type: \" + connection.remoteDescription.type);\r\n if (connection.remoteDescription.type === \"offer\") {\r\n connection.addStream(mediaStream);\r\n connection.createAnswer()\r\n .then((remoteDescription) => {\r\n console.log(\"answer\");\r\n connection.setLocalDescription(remoteDescription);\r\n })\r\n .then(() => {\r\n console.log(\"rtcsendanswer connection manager service\");\r\n this._channelService.RTCSendAnswerSignal(this._acceptingCalleeDto.clientId,\r\n JSON.stringify({ \"sdp\": connection.localDescription }), securitToken, this._channelId);\r\n })\r\n .catch((e) => {\r\n console.error(e);\r\n });\r\n }\r\n else if (connection.remoteDescription.type === \"answer\") {\r\n console.debug(\"Received Answer\");\r\n\r\n }\r\n else {\r\n console.error(\"Unsupported type: \" + connection.remoteDescription.type);\r\n }\r\n })\r\n .catch((e) => {\r\n console.error(e);\r\n });\r\n }\r\n\r\n public receivedCandidateSignal1 = (connection: any, candidate: any) => {\r\n\r\n console.log(\"receivedCandidateSignal1 \" + candidate);\r\n connection.addIceCandidate(new RTCIceCandidate(JSON.parse(candidate)))\r\n .catch((e) => {\r\n console.error(e);\r\n })\r\n }\r\n\r\n private getConnection = (clientId: any, securityToken: any) => {\r\n console.log(\"getConnection \" + clientId);\r\n var connection = this._connections[clientId] ||\r\n this.createConnection(clientId, securityToken);\r\n\r\n return connection;\r\n }\r\n\r\n private closeAllConnections = () => {\r\n for (var connectionId in this._connections) {\r\n this.closeConnection(connectionId);\r\n }\r\n }\r\n\r\n private closeConnection = (connectionId: any) => {\r\n\r\n }\r\n\r\n public async InitiateOffer(acceptingCalleeDto: any) {\r\n console.log(\"acceptingCalleeDto \" + acceptingCalleeDto.clientId);\r\n this._acceptingCalleeDto = acceptingCalleeDto;\r\n //alert(\"Initiate Offer calleeClientId: \" + acceptingCalleeDto.clientId + \" calleeUserId: \" + acceptingCalleeDto.calleeUserId);\r\n\r\n if (!this._mediaStream) {\r\n console.debug(\"_mediaStream not set: \" + JSON.stringify(this._mediaStream));\r\n return;\r\n }\r\n\r\n var pc = this.getConnection(acceptingCalleeDto.clientId, null);\r\n\r\n pc.addStream(this._mediaStream);\r\n\r\n try {\r\n console.log('pc1 createOffer start');\r\n const offer = await pc.createOffer(this._offerOptions); //instantiates and defines the offer\r\n await this.onCreateOfferSuccess(offer, pc);\r\n } catch (e) {\r\n this.onCreateSessionDescriptionError(e);\r\n }\r\n }\r\n\r\n private async onCreateOfferSuccess(desc: any, pc: any) {\r\n console.log(`Offer from pc1\\n${desc.sdp}`);\r\n console.log('pc1 setLocalDescription start');\r\n\r\n try {\r\n await pc.setLocalDescription(desc).then(() => {\r\n this.onSetLocalSuccess(pc);\r\n console.log(\"createoffer clientid: \" + this._acceptingCalleeDto.clientId);\r\n this._channelService.RTCSendOfferSignal(this._acceptingCalleeDto.clientId, JSON.stringify({ \"sdp\": desc }), this._channelId);\r\n }).catch((e) => {\r\n console.error(\"Error: \" + e);\r\n });\r\n\r\n } catch (e) {\r\n this.onSetSessionDescriptionError(e);\r\n }\r\n }\r\n\r\n private onCreateSessionDescriptionError(error) {\r\n console.log(`Failed to create session description: ${error.toString()}`);\r\n }\r\n\r\n private onSetLocalSuccess(pc) {\r\n console.log(`${pc} setLocalDescription complete`);\r\n }\r\n\r\n private onSetSessionDescriptionError(error) {\r\n console.log(`Failed to set session description: ${error.toString()}`);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Constants } from \"../constants\";\r\nimport { HttpClient, HttpHeaders, HttpResponse } from \"@angular/common/http\";\r\nimport { of, Observable } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\nimport { Contact } from \"../shared/interface/contact\";\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ContactsService {\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n // 🚧 TO GET ALL CONTACTS w/o PAGINATION ... \r\n getAllContactsNoPage(userId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}userContacts/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getAllContactsViewer(userId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}userContacts/viewerContacts/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getContactsBySearchQuery(userId: string, queryString: string) {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}userContacts/search/${userId}/${queryString}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // 💡 PAGINATION REMOVED DUE TO FRONT-END SORTING ISSUES ... \r\n // getAllContacts(userId: string): Observable> {\r\n // var headersConfig = new HttpHeaders();\r\n // return this.httpClient\r\n // .get(`${Constants.apiRoot}userContacts?channelUserId=${userId}&pageSize=24`, { headers: headersConfig, observe: \"response\" })\r\n // .pipe(\r\n // catchError(err => {\r\n // return of(err);\r\n // })\r\n // );\r\n // }\r\n\r\n // can be used to populate all contacts from your tenant ... \r\n populateContactsFromTennant(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}userContacts/syncContacts/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n createContact(contactObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}userContacts`, contactObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n updateContact(contactId: string, contactObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(`${Constants.apiRoot}userContacts/${contactId}`, contactObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // used to favorite a contact ... \r\n patchContact(contactId: string, contactObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let contactArray = [contactObj];\r\n return this.httpClient\r\n .patch(`${Constants.apiRoot}userContacts/${contactId}`, contactArray, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteContact(contactId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}userContacts/${contactId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n sendTenantInvitesByEmail(emailList: any[]): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}sendGrid`, { emailAddresses: emailList }, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { AuthService } from '../core/auth.service';\r\n\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Constants } from '../constants';\r\nimport { Observable, of } from 'rxjs';\r\nimport { FileStorageUsage } from '../shared/interface/file-storage-file';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FileStorageService {\r\n // public _isSignedIn = false;\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) {}\r\n\r\n fileStorageUpload(commitInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage/upload`, commitInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileStorageDownloadSharedFile(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage/downloadSharedFile`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n listSharedFiles(folderInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage/listSharedFolder`, folderInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n softDeleteFile(deletePath: string, channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let deleteObject = {\r\n path: deletePath,\r\n channelId: channelId\r\n };\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage/delete`, deleteObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteFile(deletePath: string, channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let deleteObject = {\r\n path: deletePath,\r\n channelId: channelId\r\n };\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage/permanentlyDelete`, deleteObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteTempIntakeFiles(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}fileStorage2/deleteAllChannelFiles/${channelId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // delete channel (used for SharedFolders)\r\n deleteSharedFolder(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n //alert(\"deleting shared folder\");\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}channel/` + channelId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n console.log(\"Error Deleting Shared Folder Channel: \" + err.name);\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n\r\n // patchchannel / renames sharedfolder \r\n renameSharedFolder(channelId: string, newChannelName: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let arr = [newChannelName];\r\n return this.httpClient\r\n .patch(`${Constants.apiRoot}channel/` + channelId, arr, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n console.log(\"ERROR REANAMING SHARED FOLDER: \" + err.name);\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putAzureStorageBlob(magicURL: any, file: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(magicURL, file, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // TODO remove unused typescripts from file storage v1 above <----<<<|) \r\n\r\n //File Storage Version 2 <-----<<<|) \r\n\r\n // fax services\r\n shareFile(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}filesharing/shareFile`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n unShareFile(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}filesharing/unshareFile`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n unShareSelf(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}filesharing/unshareSelf`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getFiles(folderInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/getBlobFiles`, folderInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileUpload(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/upload`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileUpload2(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/upload2`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // DELETE FROM DATABASE && BLOB STORAGE \r\n fileDelete(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/permanentlyDelete`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // DELETE FROM DATABASE ONLY \r\n blobFileDelete(blobFileId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}blobFile/${blobFileId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileDownload(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/download`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n //copy | duplicate\r\n fileCopy(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/copy`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n createFolder(folderInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/create_folder`, folderInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n renameFolder(folderInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/renameFolder`, folderInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n renameFile(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage2/renameFile`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n //profileImg\r\n fileStorageProfileUpload(commitInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}fileStorage/upload/profileImage`, commitInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileStorageProfileDelete(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}fileStorage/profileImage/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileStorageCustomContactProfileImageDelete(contactId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}fileStorage/customContact/ProfileImage/${contactId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileAddToFavorite(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}blobFile/addToFavorite`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n fileRemoveFromFavorite(fileInfo: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}blobFile/removeFromFavorite`, fileInfo, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // fileStorage2/fileStorageUsage/userId ... \r\n getStorageUsed(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}fileStorage2/fileStorageUsage`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { ToastNotificationService } from \"./toast-notification.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class GuestService {\r\n constructor(public _router: Router, public _toast: ToastNotificationService) {}\r\n\r\n setInvitedChannelId(channelId:string):void {\r\n localStorage.setItem('channelId', channelId);\r\n console.info(\"🍒🍒🍒🍒🍒 guest invite channelId set to local store :\", localStorage.getItem('channelId'))\r\n }\r\n\r\n routeToChannelInvited() {\r\n let channelId = localStorage.getItem('channelId');\r\n console.info(\"🍇🍇🍇🍇🍇 unauthorized guest! > routing to channel invited : \", channelId)\r\n if(channelId) {\r\n // this._toast.warn(\"Unauthorized area, returning to your meeting.\");\r\n this._router.navigate(['/channel/', channelId]);\r\n } else {\r\n // this._toast.warn(\"Unauthorized user.\");\r\n this._router.navigate(['/unauthorized']);\r\n }\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Constants } from '../constants';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { of, Observable} from 'rxjs';\r\nimport { catchError} from 'rxjs/operators';\r\nimport { MeetingEvent } from '../shared/interface/meeting-event';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MeetingService {\r\n\r\n constructor(\r\n private httpClient: HttpClient\r\n ) { }\r\n\r\n getAllMeetings(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getMeeting(meetingId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting/` + meetingId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getMeetingsByChannel(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting?channelId=${channelId}&past=false&pageSize=8`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // only call if quick meeting / not channel meeting ...\r\n getQuickMeetingByChannelId(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting?channelId=${channelId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getMeetingsByCreator(chatUserId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting?chatUserId=${chatUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getMeetingById(meetingId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting/${meetingId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n \r\n\r\n postMeeting(meetingObject:any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}meeting/`, meetingObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putRefreshMeetingToken(meetingId:any, meetingObj): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(`${Constants.apiRoot}meeting/refreshToken/` + meetingId, meetingObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putMeeting(meetingId: string, meetingObject:any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .put(`${Constants.apiRoot}meeting/` + meetingId, meetingObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteMeeting(meetingId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}meeting/` + meetingId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n cancelMeeting(meetingObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}meeting/cancelMeeting/` , meetingObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // \r\n removeMeeting(meetingObj: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}meeting/hideMeeting/` , meetingObj, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getUserMeetingAttendees(userId:string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meetingAttendees?chatUserId=${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // 🚧 new events \r\n getUserMeetingsFuture(userId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting?chatUserId=${userId}&past=false&pageSize=8`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // 🚧 for ndia (no paginaton (set high)) ... \r\n getUserMeetingsFutureNoPagination(userId: string): Observable>> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting?chatUserId=${userId}&past=false&pageSize=1000`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getMeetingAttendeesByMeetingId(meetingId:string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meetingAttendees?meetingId=${meetingId}&pageSize=300`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getMeetingsByChannelId(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meeting/channelMeetings/${channelId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n // 🚧\r\n getMeetingAttendeesToEditByMeetingId(meetingId:string, userId:string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}meetingAttendees/getAttendees/${meetingId}?userId=${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n sendInviteToken(inviteeObject:any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.stsAuthority}account/LoginWithoutPassword`, inviteeObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postGuestMeetingAttendee(attendeeObject:any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}meetingAttendees/guestattendees/`, attendeeObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postMeetingAttendee(attendeeObject:any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}meetingAttendees/`, attendeeObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteMeetingAttendee(attendeeObject:any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n let meetingId = attendeeObject.meetingId;\r\n let channelUserId = attendeeObject.channelUserId;\r\n return this.httpClient\r\n .delete(`${Constants.apiRoot}meetingAttendees/${meetingId}/${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ModalService {\r\n // these subjects need to be .next()ed from modal child components ... \r\n public modalFormTouchedSubject: Subject = new Subject();\r\n public modalFormCompleteSubject: Subject = new Subject();\r\n}","import { Injectable } from '@angular/core';\r\nimport { Constants } from '../constants';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { catchError} from 'rxjs/operators';\r\nimport { throwError, of, Observable } from 'rxjs';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProjectChannelService {\r\n public userId: string;\r\n public _isSignedIn = false;\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n ) { }\r\n\r\n getDirectMessageChannels(channelUserId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n \r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel/direct/${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getActiveDirectMessageChannels(channelUserId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n \r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel/activedirect/${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getChannelUsersInRoomByChannelUserId(channelUserId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}chatUserChatRooms?channelUserId=${channelUserId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getChannelUsersInRoomByChannelId(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n if(!channelId) {\r\n // if(true) {\r\n this.invalidParameterError();\r\n return;\r\n }\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}chatUserChatRooms?channelId=${channelId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n searchAllDirectMessageChannels(channelUserId: string, query: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel/dmChannelSearch/${channelUserId}?searchQuery=${query}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postChannelUsersInRoom(userInRoomsObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .post(`${Constants.apiRoot}chatUserChatRooms/`, userInRoomsObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n \r\n \r\n //ChannelOwners are ChatRoomChatUsers\r\n getChannelOwnersByChannelId(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}chatRoomChatUsers?channelId=${channelId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n //ChannelMembers are ChatRoomChatUser1\r\n getChannelMembersByChannelId(channelId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}chatRoomChatUser1?channelId=${channelId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getChannelNotificationsByUser(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}userNotifications/getUserNotifications/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getChannelsByOwnerId(userId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channelUser/channelOwner/${userId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n searchForMembersAndOwnersByChannelId(channelId: string, query: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}channel/channelSearch/${channelId}/${query}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n\r\n\r\n invalidParameterError() {\r\n return throwError(\"Invalid Paramater\" || \"Client Error\")\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { Constants } from '../constants';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SocketsService {\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) { }\r\n\r\n getAllSocketServers(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.http\r\n .get(`${Constants.apiRoot}socketServer/`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getActiveSocketServers(): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.http\r\n .get(`${Constants.apiRoot}socketServer?active=true`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n getSocketServer(serverId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.http\r\n .get(`${Constants.apiRoot}socketServer/` + serverId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n postSocketServer(serverObject: any): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.http\r\n .post(`${Constants.apiRoot}socketServer/`, serverObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n putSocketServer(serverId: string, serverObject: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.http\r\n .put(`${Constants.apiRoot}socketServer/` + serverId, serverObject, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n\r\n deleteSocketServer(serverId: string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n\r\n return this.http\r\n .delete(`${Constants.apiRoot}socketServer/` + serverId, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';\r\nimport { of, Observable } from 'rxjs';\r\nimport { Constants } from '../constants';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n\r\n\r\nexport interface SubscriptionPlan {\r\n activatedAt: string;\r\n balanceInCents: number;\r\n chargifyProductHandle: string; // 'starter' | 'pro-plan' ... \r\n createdAt: string;\r\n productId: string;\r\n status: string;\r\n subscriptionId: string;\r\n tenantId: string;\r\n updatedAt: string;\r\n defaultCardExists: boolean; // if you have card on file ... \r\n\r\n canAddUsers?: boolean;\r\n remainingUsers?: number;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SubscriptionService {\r\n\r\n constructor(private httpClient: HttpClient) { }\r\n\r\n // get your sub plan by id ... \r\n getSubscriptionById(subscriptionId:string): Observable> {\r\n var headersConfig = new HttpHeaders();\r\n return this.httpClient\r\n .get(`${Constants.apiRoot}subscription/${subscriptionId}`, { headers: headersConfig, observe: \"response\" })\r\n .pipe(\r\n catchError(err => {\r\n return of(err);\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n// import { SwPush } from \"@angular/service-worker\";\r\nimport { Subject } from \"rxjs\";\r\nimport { AlertSetting } from \"../shared/interface/alert\";\r\nimport { consoleLogStyle } from \"../shared/varaibles\";\r\nimport { AlertsService } from \"./alerts.service\";\r\nimport { ToastNotificationService } from \"./toast-notification.service\";\r\n\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class SystemNotificationService {\r\n\r\n private onGrantPermission = new Subject();\r\n public onGrantPermission$ = this.onGrantPermission.asObservable();\r\n\r\n private onSettingsTosub = new Subject();\r\n public onSettingsTosub$ = this.onSettingsTosub.asObservable();\r\n\r\n\r\n // private readonly VAPID_PUBLIC_KEY = 'BHLHwHWG0LY1higXvANb9hNUVjVVk4JuTVgd2XDyvSjfqTSxadaQjHK9p9_3i2Dk9i3URAwb9J4x-FHeUxt-4tY';\r\n\r\n constructor(\r\n private _alertService: AlertsService,\r\n private _toast: ToastNotificationService,\r\n // private _swPush: SwPush,\r\n ) {}\r\n\r\n\r\n // get alert settings for system, if setting true return array with setting name to sub to ... \r\n getSystemAlertsSettings(userId:string) {\r\n this._alertService.getUserAlertSettings(userId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let allSettings: AlertSetting[] = data.body;\r\n let settingsToSub: string[] = [];\r\n allSettings.forEach((setting, idx) => {\r\n // console.info(\"%c setting to sub check?\", consoleLogStyle, setting, allSettings, data.body)\r\n let last = allSettings.length - 1;\r\n if(setting.alertGroup[3] !== null && setting.alertGroup[3].alertValue !== null) {\r\n // console.info(\"%c setting to sub check?\", consoleLogStyle, setting)\r\n settingsToSub.push(setting.alertName);\r\n }\r\n if(idx === last) {\r\n // console.info('%c settings to sub from & last to next! ', consoleLogStyle, settingsToSub)\r\n this.onSettingsTosub.next(settingsToSub);\r\n }\r\n });\r\n // \r\n } else {\r\n this._toast.error('There was an error getting your alert settings.');\r\n }\r\n });\r\n }\r\n\r\n // // 🚧 NEW WEB-PUSH W/ SERVICE WORKER ...\r\n // pushNotificationStart() {\r\n // if(this._swPush.isEnabled) {\r\n // // console.log('%c ', consoleLogStyle)\r\n // // this._swPush.subscription.subscribe(res => {\r\n // // console.log(\"%c swPush sub ??? \", consoleLogStyle, res)\r\n // // });\r\n // this._swPush.notificationClicks.subscribe(notCli =>console.log(\"%c notification click! \", consoleLogStyle, notCli)); \r\n // this._swPush.requestSubscription({\r\n // serverPublicKey: this.VAPID_PUBLIC_KEY\r\n // }).then(sub => { console.log(\"%c REQUEST SW PUSH SUB? \", consoleLogStyle, sub) })\r\n // .catch(err => console.error(\"Could not subscribe to notifications\", err));\r\n // }\r\n // }\r\n\r\n // 💡 IN COMPONENT TEMPLATE check for : \r\n // > if(this._systemNotification.hasSystemNotifications() && this._systemNotification.isPermissionGranted()) ... \r\n // > if true need to ask for permission & init notifications ... \r\n notificationStart() {\r\n if(this.hasSystemNotifications) {\r\n this.initNotifications();\r\n } else {\r\n console.log(\"no Notification in window\")\r\n }\r\n }\r\n \r\n // 💡 new notification permission check ... \r\n async initNotifications() {\r\n // console.info(\"%c \", consoleLogStyle)\r\n const permission = await Notification.requestPermission();\r\n switch (permission) {\r\n case 'granted': {\r\n // add show notification func here i think ...\r\n console.log('%c System Notification Permission was granted! ', consoleLogStyle);\r\n // this.isPermissionGranted = Notification.permission === 'granted';\r\n this.onGrantPermission.next(this.isPermissionGranted);\r\n this.showInitialNotification();\r\n break;\r\n }\r\n case 'denied': {\r\n console.log('%c System Notification Permission was denied ', consoleLogStyle);\r\n this.onGrantPermission.next(this.isPermissionGranted);\r\n // this.isPermissionGranted = Notification.permission === 'granted';\r\n this._toast.error('Notification permission was Denied, you can go to your Browsers settings to reset. * may not work in browsers private mode 🕵️‍♂️ ');\r\n break;\r\n }\r\n default: {\r\n console.log('%c System Notification Permission was not granted or denied ', consoleLogStyle);\r\n this.onGrantPermission.next(this.isPermissionGranted);\r\n // this.isPermissionGranted = Notification.permission === 'granted';\r\n }\r\n }\r\n }\r\n \r\n // to show initial notification if && when user grants permission ... \r\n showInitialNotification() {\r\n console.log('%c Showing initial notification ', consoleLogStyle);\r\n const notification = this.notify(\r\n 'VIA3 Notifications',\r\n 'You can now recieve system notifications!',\r\n 'initial notification'\r\n );\r\n console.log('%c Showing initial notification not????? ', consoleLogStyle, notification);\r\n if(notification) {\r\n document.addEventListener('visibilitychange', () => {\r\n if(document.visibilityState === 'visible') {\r\n // The tab has become visible so clear the now-stale Notification.\r\n notification.close();\r\n }\r\n });\r\n notification.addEventListener('click', () => {\r\n // focus tab on notification click ... \r\n window.parent.focus();\r\n });\r\n }\r\n }\r\n\r\n // 🚧 to call from alert event from app component ... \r\n showNewNotification(message:string, type: string, image?:string) {\r\n const notification = this.notify(\r\n 'VIA3 Notifications',\r\n message,\r\n type,\r\n image ?? null\r\n );\r\n if(notification) {\r\n document.addEventListener('visibilitychange', () => {\r\n if(document.visibilityState === 'visible') {\r\n // The tab has become visible so clear the now-stale Notification.\r\n notification.close();\r\n }\r\n });\r\n notification.addEventListener('click', () => {\r\n if(type === 'unread message') {\r\n // nav to message here ... ? \r\n window.parent.focus();\r\n } else {\r\n window.parent.focus();\r\n }\r\n });\r\n } else {\r\n console.warn(\"notification permission not granted! || system not compatible\")\r\n }\r\n }\r\n \r\n // creates notification ... factory function ... \r\n notify(title:string, body:string, tag: string, image?:string) {\r\n if (this.hasSystemNotifications && this.isPermissionGranted) { // fail safe check ... also checking in html ... \r\n return new Notification(title, {\r\n body,\r\n tag, // 💡 this is so notifications won't stack ... \r\n icon: image ?? 'https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Icon%202/logo-round-blk-blue-FIXED.png', // our logo ... \r\n silent: false, // should hear sound ... could be a setting ... \r\n vibrate: [100, 50, 100], // for mobile ... could be a setting ... \r\n // 💡 image is optional for Chrome only need to resize as small if start using ...\r\n // image: 'https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Full/logo-blue-transparent-small.png',\r\n });\r\n } else {\r\n console.warn(\"notification permission not granted! || system not compatible\")\r\n return null;\r\n }\r\n }\r\n \r\n // to show if system has notifications ... \r\n public get hasSystemNotifications(): boolean { return 'Notification' in window };\r\n public get isPermissionGranted(): boolean { return Notification.permission === 'granted' };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ToastNotification, ToastInfoType, ToastNotificationType, ToastWarningType } from '../toast-notification/toast-notification.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastNotificationService {\r\n public subject = new Subject();\r\n public keepAfterRouteChange = true;\r\n\r\n private onToastResolveEvent = new Subject();\r\n private onToastExamplesEvent = new Subject();\r\n public onToastResolveEvent$ = this.onToastResolveEvent.asObservable();\r\n public onToastExamplesEvent$ = this.onToastExamplesEvent.asObservable();\r\n\r\n constructor(public router: Router) { \r\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true \r\n router.events.subscribe(event => { \r\n if (event instanceof NavigationStart) { \r\n if (this.keepAfterRouteChange) { \r\n // only keep for a single route change \r\n this.keepAfterRouteChange = false; \r\n } else { \r\n // clear alert messages \r\n this.clear(); \r\n } \r\n } \r\n }); \r\n }\r\n \r\n getAlert(): Observable { \r\n return this.subject.asObservable(); \r\n } \r\n\r\n success(message: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) { \r\n this.showNotification(ToastNotificationType.Success, message, disableSound, keepAfterRouteChange); \r\n } \r\n\r\n error(message: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) { \r\n this.showNotification(ToastNotificationType.Error, message, disableSound, keepAfterRouteChange); \r\n } \r\n\r\n info(message: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) { \r\n this.showNotificationInfo(ToastInfoType.Default, message, null, disableSound, keepAfterRouteChange); \r\n }\r\n\r\n warn(message: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) { \r\n this.showNotificationWarning(ToastWarningType.Default, message, null, null, false, disableSound, keepAfterRouteChange);\r\n }\r\n\r\n continue(message: string, type: string, checkboxMessage: string = null, disableSound: boolean = false, keepAfterRouteChange: boolean = false) {\r\n // let message = \"You are about to leave the current page, would you like to continue\";\r\n this.showNotificationWarning(ToastWarningType.Continue, message, type, checkboxMessage, true, disableSound, keepAfterRouteChange);\r\n }\r\n \r\n continueLink(message: string, url: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) {\r\n // let message = \"You are about to leave the current page, would you like to continue\";\r\n this.showNotificationWarning(ToastWarningType.ContinueLink, message, url, null, true, disableSound, keepAfterRouteChange);\r\n }\r\n \r\n enter(name: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) {\r\n let message = \"has entered the channel.\"; \r\n this.showNotificationInfo(ToastInfoType.Enter, message, name, disableSound, keepAfterRouteChange); \r\n }\r\n\r\n leave(name: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) {\r\n let message = \"has left the channel.\"; \r\n this.showNotificationInfo(ToastInfoType.Leave, message, name, disableSound, keepAfterRouteChange); \r\n }\r\n\r\n user(name: string, message: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) {\r\n this.showNotificationInfo(ToastInfoType.User, message, name, disableSound, keepAfterRouteChange); \r\n }\r\n\r\n file(message: string, disableSound: boolean = false, keepAfterRouteChange: boolean = false) {\r\n this.showNotificationInfo(ToastInfoType.File, message, null, disableSound, keepAfterRouteChange); \r\n }\r\n \r\n showNotification(type: ToastNotificationType, message: string, disableSound: boolean = false, keepAfterRouteChange) { \r\n this.keepAfterRouteChange = keepAfterRouteChange; \r\n this.subject.next(\r\n { \r\n type: type, \r\n message: message,\r\n disableSound: disableSound \r\n }); \r\n }\r\n\r\n showNotificationInfo(infoType: ToastInfoType, message: string, name: string = null, disableSound: boolean, keepAfterRouteChange: boolean) { \r\n this.keepAfterRouteChange = keepAfterRouteChange; \r\n this.subject.next(\r\n { \r\n type: ToastNotificationType.Info,\r\n infoType: infoType,\r\n message: message,\r\n name: name, \r\n disableSound: disableSound \r\n }); \r\n }\r\n \r\n showNotificationWarning(warningType: ToastWarningType, message: string, data: string, checkboxMessage: string, disableTimeout: boolean, disableSound: boolean, keepAfterRouteChange: boolean) {\r\n this.keepAfterRouteChange = keepAfterRouteChange;\r\n this.subject.next(\r\n {\r\n type: ToastNotificationType.Warning,\r\n warningType: warningType,\r\n message: message,\r\n data: data,\r\n checkboxMessage: checkboxMessage,\r\n checkboxConfirm: false,\r\n disableTimeOut: disableTimeout,\r\n disableSound: disableSound\r\n });\r\n }\r\n\r\n clear() { \r\n this.subject.next(); \r\n }\r\n\r\n public completeToastResolveEvent(type: string, checkboxConfirm: boolean = false) {\r\n this.onToastResolveEvent.next({type: type, checkboxConfirm: checkboxConfirm});\r\n }\r\n\r\n public showToastExamples() {\r\n this.onToastExamplesEvent.next();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { Constants } from '../constants';\r\nimport { IApps } from './apps';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { catchError, retry } from 'rxjs/operators';\r\nimport * as Twilio from 'twilio-video';\r\n\r\n// import { AccessToken } from 'twilio';\r\nexport type Devices = MediaDeviceInfo[];\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TwilioService {\r\n $devicesUpdated: Observable>;\r\n\r\n private deviceBroadcast = new ReplaySubject>();\r\n\r\n constructor() {\r\n if (navigator && navigator.mediaDevices) {\r\n navigator.mediaDevices.ondevicechange = (_: Event) => {\r\n this.deviceBroadcast.next(this.getDeviceOptions());\r\n }\r\n }\r\n\r\n this.$devicesUpdated = this.deviceBroadcast.asObservable();\r\n this.deviceBroadcast.next(this.getDeviceOptions());\r\n }\r\n\r\n private async isGrantedMediaPermissions() {\r\n if (navigator && navigator['permissions']) {\r\n try {\r\n const result = await navigator['permissions'].query({ name: 'camera' });\r\n if (result) {\r\n if (result.state === 'granted') {\r\n return true;\r\n } else {\r\n const isGranted = await new Promise(resolve => {\r\n result.onchange = (_: Event) => {\r\n const granted = _.target['state'] === 'granted';\r\n if (granted) {\r\n resolve(true);\r\n }\r\n }\r\n });\r\n\r\n return isGranted;\r\n }\r\n }\r\n } catch (e) {\r\n // This is only currently supported in Chrome.\r\n // https://stackoverflow.com/a/53155894/2410379\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private async getDeviceOptions(): Promise {\r\n const isGranted = await this.isGrantedMediaPermissions();\r\n if (navigator && navigator.mediaDevices && isGranted) {\r\n let devices = await this.tryGetDevices();\r\n if (devices.every(d => !d.label)) {\r\n devices = await this.tryGetDevices();\r\n }\r\n return devices;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private async tryGetDevices() {\r\n const mediaDevices = await navigator.mediaDevices.enumerateDevices();\r\n const devices = ['audioinput', 'audiooutput', 'videoinput'].reduce((options, kind) => {\r\n return options[kind] = mediaDevices.filter(device => device.kind === kind);\r\n }, [] as Devices);\r\n\r\n return devices;\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { ContactsService } from 'src/app/services/contacts.service';\r\nimport { SubscriptionPlan } from 'src/app/services/subcription.service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { ChannelUser } from '../../interface/channel-user';\r\nimport { consoleLogStyle, standardEmailRegex } from '../../varaibles';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'account-email-invite',\r\n templateUrl: './account-email-invite.component.html',\r\n styleUrls: ['./account-email-invite.component.scss']\r\n})\r\nexport class AccountEmailInviteComponent implements OnInit, OnDestroy {\r\n @Input(\"userInfo\") userInfo: ChannelUser;\r\n @Input(\"subscriptionPlan\") subscriptionPlan: SubscriptionPlan;\r\n\r\n @Output(\"formTouchedEvent\") formTouchedEvent = new EventEmitter();\r\n @Output(\"onCompleteEvent\") onCompleteEvent = new EventEmitter();\r\n public formTouched: boolean = false;\r\n\r\n public emailList: any = [];\r\n public newEmail: FormGroup;\r\n\r\n public isAdding: boolean = false;\r\n public isSending: boolean = false;\r\n public hasWarnings: boolean = false;\r\n public hasMaxUsersSub: boolean = false;\r\n public maxInvites: number = 10;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n public _toastService: ToastNotificationService,\r\n public _contactsService: ContactsService,\r\n\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n // console.info(\"sub plan?\", this.subscriptionPlan)\r\n this.newEmail = new FormGroup({\r\n email: new FormControl('', [\r\n Validators.required,\r\n // Validators.minLength(4),\r\n // Validators.maxLength(256),\r\n // Validators.email\r\n ]),\r\n });\r\n\r\n this.subscriptions.push(\r\n this.newEmail.valueChanges\r\n .subscribe(data => {\r\n this.emitTouched();\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n get emailControl() { return this.newEmail.get('email'); }\r\n\r\n public addEmailsToList() {\r\n this.isAdding = true;\r\n let emailString = this.newEmail.value.email;\r\n emailString = emailString.split(' ').filter(email => email !== /\\s+/ && email !== \"\");\r\n for (let email of emailString) {\r\n // console.log(email);\r\n if (this.emailList.length < this.maxInvites) {\r\n this.emailList.push(this.emailProperties(email));\r\n } else {\r\n break;\r\n }\r\n }\r\n this.checkForWarning();\r\n this.setEmailInputStatus();\r\n this.newEmail.reset();\r\n this.isAdding = false;\r\n }\r\n\r\n private emailProperties(email: string) {\r\n let emailObject = { email: email, warning: true, message: null };\r\n if (email.length > 256) {\r\n emailObject.message = \"this email is too long\";\r\n } else if (this.checkIfExists(email)) {\r\n emailObject.message = \"this is a duplicate email\";\r\n } else if (!standardEmailRegex.test(email)) {\r\n emailObject.message = \"this email may not be valid\";\r\n } else {\r\n emailObject.warning = false;\r\n }\r\n return emailObject;\r\n }\r\n\r\n public removeEmailFromList(i) {\r\n this.emailList.splice(i, 1);\r\n this.checkForWarning();\r\n this.setEmailInputStatus();\r\n }\r\n\r\n public removeAllWarnings() {\r\n // console.table(\"emailList\", this.emailList);\r\n this.emailList = this.emailList.filter(emailObj => !emailObj.warning);\r\n this.checkForWarning();\r\n this.setEmailInputStatus();\r\n }\r\n\r\n public sendEmails() {\r\n this.isSending = true;\r\n let emails = this.emailList.map(emailObj => emailObj.email);\r\n this._contactsService.sendTenantInvitesByEmail(emails)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(res);\r\n this._toastService.success(\"Invites have been successfully sent out\");\r\n } else {\r\n // console.log(res);\r\n this._toastService.error(\"A problem occured while sending emails\");\r\n }\r\n this.emailList = [];\r\n this.emailControl.enable();\r\n this.hasWarnings = false;\r\n this.resetTouched();\r\n this.isSending = false;\r\n });\r\n }\r\n\r\n private checkIfExists(emailName: string) {\r\n return this.emailList.some(emailObj => emailObj.email === emailName);;\r\n }\r\n\r\n private checkForWarning() {\r\n // console.info(\"%c email list len | sub.remainingUsers \", consoleLogStyle, this.emailList.length, this.subscriptionPlan.remainingUsers)\r\n this.hasWarnings = this.emailList.some(emailObj => emailObj.warning === true);\r\n // add list len check based on plan.remainingUsers ...\r\n if(this.subscriptionPlan.chargifyProductHandle !== 'enterprise' && \r\n this.subscriptionPlan.canAddUsers && \r\n (this.subscriptionPlan.remainingUsers <= this.emailList.length)) {\r\n // console.info(\"%c email list len | sub.remainingUsers \", consoleLogStyle, this.emailList.length, this.subscriptionPlan.remainingUsers)\r\n // this.hasWarnings = true;\r\n this.hasMaxUsersSub = true;\r\n } else {\r\n this.hasWarnings = false;\r\n this.hasMaxUsersSub = false;\r\n }\r\n }\r\n\r\n private setEmailInputStatus() {\r\n if (this.emailList.length >= this.maxInvites) {\r\n this.emailControl.disable();\r\n } else {\r\n this.emailControl.enable();\r\n }\r\n }\r\n\r\n private emitTouched() {\r\n if (!this.formTouched) {\r\n this.formTouched = true;\r\n // console.log('Form Touched Emiited');\r\n this.formTouchedEvent.emit(true);\r\n }\r\n }\r\n\r\n private resetTouched() {\r\n this.formTouched = false;\r\n this.formTouchedEvent.emit(false);\r\n }\r\n}\r\n","

Invite to Join VIA3

\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t= maxInvites\r\n\t\t\t\t\"\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Recipients:

\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t

{{ item.email }}

\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t\t\t= maxInvites\r\n\t\t\t\t}\"\r\n\t\t\t>\r\n\t\t\t\tMax {{ maxInvites }} Recipients At A Time\r\n\t\t\t

\r\n\t\t\t

= 1)\" class=\"email-warning me-auto\">\r\n\t\t\t\tYou can only add {{subscriptionPlan.remainingUsers}} more {{subscriptionPlan.remainingUsers > 1 ? 'users' : 'user'}} with this subscription plan\r\n\t\t\t

\r\n\t\t\t

\r\n\t\t\t\tClear All Warnings Before Inviting\r\n\t\t\t

\r\n\t\t
\r\n\t
\r\n\t
\r\n\t\t

\r\n\t\t\tSending Emails...\r\n\t\t

\r\n\t\t
\r\n\t\t\t 0 && !isSending\"\r\n\t\t\t>\r\n\t\t\t\tSend Invites\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n
\r\n","import { Component, Inject, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\r\nimport { MatSlideToggleChange } from \"@angular/material/slide-toggle\";\r\nimport { AlertsService } from \"src/app/services/alerts.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { AlertSetting } from \"../../interface/alert\";\r\nimport { SystemNotificationService } from \"src/app/services/system-notification.service\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { MatAccordion } from '@angular/material/expansion';\r\nimport { Subscription } from \"rxjs\";\r\nimport { Platform } from \"@angular/cdk/platform\";\r\nimport { ChannelService } from \"src/app/services/channel-service\";\r\n\r\n\r\n\r\ninterface NewSetting {\r\n settingId:string;\r\n value:boolean;\r\n};\r\n\r\n@Component({\r\n selector: \"alerts-settings\",\r\n templateUrl: \"./alerts-settings.component.html\",\r\n styleUrls: [\"./alerts-settings.component.scss\"]\r\n})\r\nexport class AlertsSettingsComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild(MatAccordion) accordion: MatAccordion;\r\n\r\n public userInfo: ChannelUser;\r\n\r\n public alertSettings: Array = [];\r\n public isLoadingSettings: boolean;\r\n\r\n public newSettings: Array = [];\r\n public isUpdatingSettings: boolean;\r\n\r\n public hasNotifications: boolean;\r\n public permissionGranted: boolean;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n\r\n constructor(\r\n @Inject('rippleColor') public rippleColor: string,\r\n private _alertsService: AlertsService,\r\n private _toastService: ToastNotificationService,\r\n public _systemNotification: SystemNotificationService,\r\n private _apiCallsService: ApiCallsService,\r\n public _platform: Platform,\r\n public _channelService: ChannelService,\r\n ) {\r\n this._channelService.sidebarChangeEvent(0);\r\n // console.info(\"%c has noti? \", consoleLogStyle, this.hasNotifications)\r\n // console.info(\"%c has sys noti permiss been granted? \", consoleLogStyle, this.permissionGranted)\r\n if(!this._platform.IOS && !this._platform.ANDROID && !this._platform.SAFARI) {\r\n this.hasNotifications = this._systemNotification.hasSystemNotifications;\r\n this.permissionGranted = this._systemNotification.isPermissionGranted;\r\n // \r\n this.subscriptions.push(this._systemNotification.onGrantPermission$\r\n .subscribe((isPermissionGranted:boolean) => {\r\n this.permissionGranted = isPermissionGranted;\r\n if(this.permissionGranted) {\r\n this._systemNotification.getSystemAlertsSettings(this.userInfo.channelUserId);\r\n }\r\n }));\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this._getChannelUser();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n _getChannelUser() {\r\n this.isLoadingSettings = true;\r\n this._apiCallsService.getMyChannelUser()\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n // console.log(\"getchanneluser home\", data);\r\n this.userInfo = data.body;\r\n this.getAlertSettings();\r\n } else {\r\n this._toastService.error('There was an error getting user info.')\r\n this.isLoadingSettings = false;\r\n }\r\n });\r\n }\r\n\r\n getAlertSettings() {\r\n this.alertSettings = [];\r\n this._alertsService.getUserAlertSettings(this.userInfo.channelUserId)\r\n .subscribe(res => {\r\n if(res.status === 200) {\r\n // console.log(\"%c alert settings \", consoleLogStyle, res.body)\r\n this.alertSettings = res.body;\r\n this.isLoadingSettings = false;\r\n } else {\r\n // console.log(\"there was an error getting alert settings\")\r\n this.isLoadingSettings = false;\r\n this._toastService.error('There was an error getting your alert settings.');\r\n }\r\n });\r\n }\r\n\r\n // 🚧🚧 New patch setting with every change here ... \r\n toggleSettingChange(settingId:string, e: MatSlideToggleChange, alertTarget:number) {\r\n // 💡 e.checked = the boolean value from toggle event ... \r\n // console.log(\"%c toggle event (id), (val) \", consoleLogStyle, settingId, ',', e.checked)\r\n this.patchAlertSetting(settingId, e.checked, alertTarget);\r\n }\r\n\r\n patchAlertSetting(settingId:string, patchValue:boolean, alertTarget:number) {\r\n let settingPatch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/value\",\r\n \"value\": patchValue\r\n };\r\n this._alertsService.patchAlertSetting(settingId, settingPatch)\r\n .subscribe( res => {\r\n if(res.status === 204) {\r\n // console.log(\"setting updated!\" + settingId, alertTarget)\r\n if(alertTarget === 3) {\r\n this._systemNotification.getSystemAlertsSettings(this.userInfo.channelUserId);\r\n }\r\n } else {\r\n this._toastService.error(\"There was an error setting this setting.\");\r\n }\r\n });\r\n }\r\n\r\n grantSystemPermission() {\r\n this._systemNotification.notificationStart();\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // @Output('closeAlertSettings') closeAlertSettings = new EventEmitter();\r\n // @Output(\"formTouchedEvent\") formTouchedEvent = new EventEmitter();\r\n // @Input('userId') userId: string;\r\n\r\n\r\n // if(e.checked !== prevValue && !this.newSettings.some(setting => setting.settingId === settingId)) {\r\n // this.newSettings.push({settingId: settingId, value: e.checked});\r\n // if(this.newSettings.length === 1) {\r\n // // this.formTouchedEvent.emit(true);\r\n // }\r\n // console.log(\"%c toggle event & value has changed, pushing to new set arr \", consoleLogStyle, this.newSettings)\r\n // } else if(e.checked === prevValue && this.newSettings.some(setting => setting.settingId === settingId)) {\r\n // this.newSettings = this.newSettings.filter(setting => setting.settingId !== settingId);\r\n // if(this.newSettings.length === 0) {\r\n // // this.formTouchedEvent.emit(false);\r\n // }\r\n // console.log(\"%c toggle event & value is same as initial & is in arr, removing so wont update\", consoleLogStyle, this.newSettings)\r\n // } else {\r\n // console.log(\"%c toggle event & value is either already in arr | not so do nothing... \", consoleLogStyle, this.newSettings)\r\n // return;\r\n // }\r\n\r\n\r\n // // ❌❌❌ removing here toggle change will patch ...\r\n // saveAlertSettings() {\r\n // this.isUpdatingSettings = true;\r\n // this.newSettings.forEach((setting: NewSetting, i) => {\r\n // this.patchAlertSetting(setting.settingId, setting.value, (i === (this.newSettings.length - 1)));\r\n // });\r\n // }\r\n\r\n // this._toastService.info(\"Alert setting updated!\" + settingId);\r\n // if(isLast) {\r\n // this.newSettings = [];\r\n // this.isUpdatingSettings = false;\r\n // // this.closeAlertSettings.emit();\r\n // // this.formTouchedEvent.emit(false);\r\n // this._toastService.success(\"Alert settings updated!\");\r\n // this.getAlertSettings();\r\n // }","
\r\n \r\n
\r\n
\r\n \r\n

\r\n Alert Settings\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{setting.alertName}}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n VIA3\r\n \r\n \r\n Email\r\n \r\n \r\n SMS\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n System\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit, SimpleChanges } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport {\r\n listAnimationWrap,\r\n listAnimationItem,\r\n fadeIn,\r\n customExitTransition,\r\n // customExitAllTransition,\r\n} from \"src/app/animations/global-animations\";\r\nimport { AlertsService } from \"src/app/services/alerts.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { ChannelService } from \"src/app/services/channel-service\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { Alert } from \"../../interface/alert\";\r\n\r\n\r\n\r\n@Component({\r\n selector: \"alerts[componentId]\",\r\n templateUrl: \"./alerts.component.html\",\r\n styleUrls: [\"./alerts.component.scss\"],\r\n animations: [listAnimationWrap, listAnimationItem, fadeIn],\r\n})\r\nexport class AlertsComponent implements OnInit {\r\n @Input('componentId') componentId: string;// Required ... [will be - 'alerts-home' : 'sidebar-alerts'] ... \r\n @Input(\"userInfo\") userInfo: ChannelUser;\r\n @Input('isViewer') isViewer: boolean;\r\n\r\n // public viewerAlerts: any[] = [];\r\n\r\n public alerts: Array = [];\r\n public isLoadingAlerts: boolean = true;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _alertsService: AlertsService,\r\n private _toastService: ToastNotificationService,\r\n private _channelService: ChannelService\r\n ) {\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"clearAllAlerts\") {\r\n this.clearAllAlerts();\r\n }\r\n }));\r\n\r\n // ❌💡 this should .shift(newAlert) to alerts[] ... no need to load all again ... \r\n // 🐛 this is happening for meeting creator as well ... does not need to ... \r\n // i need data back from this event to fix ... \r\n \r\n // refresh alerts when a new meeting invitation is received so that alerts appear for new meeting invites \r\n this.subscriptions.push(this._channelService.onUpdateMeetingListEvent$.subscribe((data) => {\r\n // console.log(\"%c 🤣 THIS IS FROM THE ALERTS COMPONENT (.onUpdateMeetingListEvent$).sub \" , consoleLogStyle, data);\r\n this.getUserAlerts(); \r\n }));\r\n\r\n this.subscriptions.push(this._alertsService.onRemoveAlertEvent$.subscribe((alertObj) => {\r\n let updatedAlerts = this.alerts.filter(alert => alert.notificationId !== alertObj.notificationId);\r\n let element = document.getElementsByClassName(`alert-${this.componentId}`)[alertObj.alertIdx];\r\n let element2 = document.getElementsByClassName(`alert-${this.componentId}`)[alertObj.alertIdx + 1] || null;\r\n element.style.opacity = '0.5';\r\n customExitTransition(element, element2);\r\n setTimeout(() => {\r\n this.alerts = updatedAlerts;\r\n }, 262);\r\n }));\r\n\r\n this.subscriptions.push(this._alertsService.onRemoveAllAlertsEvent$.subscribe(() => {\r\n this.alerts = [];\r\n this.isLoadingAlerts = false;\r\n }));\r\n\r\n // ❌ the notiObj returned here is HUGE ... \r\n this.subscriptions.push(this._channelService.onUnreadDirectMessageNotification$\r\n .subscribe((notiObj) => {\r\n // console.log(\"%c THIS IS FROM THE ALERTS COMPONENT (.onUnreadDirectMessageNotification$).sub \" , consoleLogStyle, notiObj);\r\n if(notiObj.numUnreadMessages === 0) {\r\n return;\r\n } else {\r\n this.getUserAlerts();\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.userInfo) {\r\n if (!!this.userInfo) {\r\n // console.log(\"%c user info input changes ALERTS (not viewer)\", consoleLogStyle, this.userInfo);\r\n if(this.isViewer) {\r\n this.isLoadingAlerts = false;\r\n // this.viewerAlerts = [\"Learn more about NDIA\", \"Learn more about VIA3\", \"Follow us on Twitter @netinclusion\"];\r\n } else {\r\n this.getUserAlerts();\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n getUserAlerts() {\r\n this.isLoadingAlerts = true;\r\n this._alertsService.getUserAlerts(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.alerts = data.body;\r\n // this.alertsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // console.log(\"%c your alerts \", consoleLogStyle, this.alerts)\r\n this.isLoadingAlerts = false;\r\n return;\r\n } else {\r\n // console.error(\"error getting alerts\", data)\r\n this._toastService.error(\"There was an error getting your alerts.\");\r\n this.isLoadingAlerts = false;\r\n }\r\n });\r\n }\r\n\r\n clearAllAlertsConfirm() {\r\n this._toastService.continue(\"Are you sure you want to clear all Alerts?\", \"clearAllAlerts\");\r\n }\r\n\r\n clearAllAlerts() {\r\n // console.log(\"clearing all alerts!\")\r\n // let allAlerts = document.getElementsByClassName(`alert-${this.componentId}`);\r\n // console.log(allAlerts)\r\n // customExitAllTransition(allAlerts);\r\n this.alerts = []; // clear all ... \r\n this.isLoadingAlerts = true;\r\n this._alertsService.deleteAllAlerts(this.userInfo.channelUserId)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"all alerts removed\")\r\n // this.isLoadingAlerts = false;\r\n this._alertsService.removeAllAlerts();\r\n } else {\r\n this._toastService.error(\"There was an error deleting all alerts.\");\r\n this.getUserAlerts();\r\n }\r\n }); \r\n }\r\n\r\n deleteAlert(notificationId:string, alertIdx: number) {\r\n this.alerts[alertIdx].isRemoving = true;\r\n let element = document.getElementsByClassName(`alert-${this.componentId}`)[alertIdx];\r\n element.style.opacity = '0.5';\r\n this._alertsService.deleteAlert(notificationId)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"alert removed\", notificationId, element)\r\n this._alertsService.removeAlert(notificationId, alertIdx);\r\n } else {\r\n this._toastService.error(\"There was an error deleting this alert.\");\r\n element.style.opacity = '1';\r\n this.alerts[alertIdx].isRemoving = false;\r\n }\r\n });\r\n }\r\n\r\n patchAlertViewed(notificationId: string, alertIdx: number) {\r\n if(!this._channelService._isDesktop) {\r\n this._channelService.sidebarChangeEvent(0);\r\n }\r\n // console.log(\"%c alert viewed! \", consoleLogStyle)\r\n let settingPatch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/viewed\",\r\n \"value\": true\r\n };\r\n this._alertsService.patchAlert(notificationId, settingPatch)\r\n .subscribe( res => {\r\n if(res.status === 204) {\r\n // console.log(\"alert viewed updated!\")\r\n this.alerts[alertIdx].viewed = true;\r\n // this._toastService.info(\"Alert viewed updated!\" + notificationId);\r\n } else {\r\n this._toastService.error(\"There was an error patching this alert.\");\r\n }\r\n });\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n // pagination removed ... \r\n\r\n // public alertsPag: any = {};\r\n // public isLoadingMoreAlerts: boolean;\r\n\r\n // 💡 infinite scrolling w/ Intersection Observer api ... [(@listAnimationItemLong.done)=\"last ? runPaginationObserver() : ''\"] \r\n // 🌐 https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API \r\n // paginationObserver() {\r\n // let lastEl = document.getElementById(`LastAlert-${this.componentId}`); // grab last El in list [after animation done & is in DOM] \r\n // // console.log(\"%c List anime done: run intersect observer 🎯 LAST El: \", consoleLogStyle, lastEl)\r\n // if(!!lastEl) {\r\n // let observer = new IntersectionObserver(entries => {\r\n // entries.forEach(entry => { // can observe multiple El's but will always be an Array of [entries] \r\n // // console.log(\"%c is 🎯 El intersecting? \", consoleLogStyle, entry.isIntersecting)\r\n \r\n // // || entry.intersectionRatio > 0 - also works\r\n // if (entry.isIntersecting && entry.intersectionRatio >= 0) { // bottom of view intersecting W/ the top of El \r\n // // console.log('%c 🎯 El is IN view run get next page! ', consoleLogStyle);\r\n \r\n // this.getMoreUserAlerts(this.alertsPag.nextPageLink);\r\n \r\n // observer.unobserve(entry.target); // stop tracking this El, will grab next LastEl \r\n // } else {\r\n // // console.log('%c 🎯 El OUT of view. ',consoleLogStyle);\r\n // }\r\n // });\r\n // });\r\n // observer.observe(lastEl); // track the last El in list \r\n // } else {\r\n // console.info(\"no last EL?\", lastEl);\r\n // }\r\n // }\r\n\r\n // getMoreUserAlerts(link:any) { // returns 48 results ... 2 page len avg. \r\n // this.isLoadingMoreAlerts = true;\r\n // this._apiCallsService.getGenericForPagination(link)\r\n // .subscribe(data => {\r\n // if(data.status === 200) {\r\n // this.alerts = this.alerts.concat(data.body);\r\n // this.alertsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // // console.log(\"%c MORE alerts\", consoleLogStyle, this.alerts);\r\n // // console.log(\"%c alerts pagination ? \", consoleLogStyle, this.alertsPag);\r\n // this.isLoadingMoreAlerts = false;\r\n // } else {\r\n // console.error(\"error getting alerts ...\", data)\r\n // this._toastService.error(\"There was an error getting alerts.\");\r\n // this.isLoadingMoreAlerts = false;\r\n // }\r\n // });\r\n // }\r\n\r\n // 💡 alert options dropdown ... removed for now ... may need later ... \r\n \r\n // showAlertOptionsDropdown(i: number ,e?: Event) {\r\n // e.stopPropagation();\r\n // const options = document.getElementById(`alert-options-dropdown-${i}`);\r\n // options.classList.add('active');\r\n \r\n // // also hide scrollbar ... \r\n // let scrollBox = document.getElementById('alertsScrollbox');\r\n // scrollBox.classList.add('hidden');\r\n // }\r\n\r\n // hideAlertOptionsDropdown(i: number ,e?: Event) {\r\n // const options = document.getElementById(`alert-options-dropdown-${i}`);\r\n // options.classList.remove('active');\r\n \r\n // // also resume scrolling ... \r\n // let scrollBox = document.getElementById('alertsScrollbox');\r\n // scrollBox.classList.remove('hidden');\r\n // }","\r\n","import { Component, OnInit, ViewChild, Input, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'amp',\r\n templateUrl: './amp-player.component.html',\r\n styleUrls: ['./amp-player.component.scss']\r\n})\r\nexport class AmpPlayerComponent implements OnInit {\r\n @ViewChild('video', { static: true }) videoPlayer;\r\n @Input() vId;\r\n @Input() src;\r\n @Input() autoplay;\r\n @Input() controls;\r\n @Output() ended: EventEmitter = new EventEmitter();\r\n @Output() seeking: EventEmitter = new EventEmitter();\r\n public version: string = \"2.2\"\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n console.log(this.videoPlayer);\r\n var liveeventurl = this.src;\r\n\r\n //alert(JSON.stringify(liveeventurl));\r\n\r\n if (liveeventurl) {\r\n //liveeventurl = liveeventurl;\r\n\r\n\r\n var myOptions = {\r\n \"nativeControlsForTouch\": false,\r\n autoplay: JSON.parse(this.autoplay),\r\n controls: JSON.parse(this.controls),\r\n // width: \"100%\",\r\n // height: \"auto\",\r\n fluid: true,\r\n id: this.vId,\r\n logo: {\r\n enabled: false\r\n },\r\n playbackSpeed: {\r\n enabled: true,\r\n initialSpeed: 1.0,\r\n speedLevels: [\r\n { name: \"x4.0\", value: 4.0 },\r\n { name: \"x3.0\", value: 3.0 },\r\n { name: \"x2.0\", value: 2.0 },\r\n { name: \"x1.75\", value: 1.75 },\r\n { name: \"x1.5\", value: 1.5 },\r\n { name: \"x1.25\", value: 1.25 },\r\n { name: \"normal\", value: 1.0 },\r\n { name: \"x0.75\", value: 0.75 },\r\n { name: \"x0.5\", value: 0.5 },\r\n ]\r\n },\r\n poster: \"\"\r\n };\r\n console.log(JSON.stringify(myOptions));\r\n //var myOptions = {\r\n // autoplay: true,\r\n // controls: true,\r\n\r\n // width: \"1280\",\r\n // height: \"720\",\r\n // poster: \"\"\r\n //};\r\n\r\n var myPlayer = amp(this.videoPlayer.nativeElement, myOptions);\r\n myPlayer.currentTime(30);\r\n\r\n\r\n\r\n\r\n //var myPlayer = amp(\"azuremediaplayer\", myOptions);\r\n ////myPlayer.currentTime(30);\r\n myPlayer.src([{ src: \"//\" + liveeventurl, type: \"application/vnd.ms-sstr+xml\" },]);\r\n\r\n //var myPlayer = amp(\"azuremediaplayer1\", myOptions);\r\n //myPlayer.src([{ src: \"//\" + liveeventurl, type: \"application/vnd.ms-sstr+xml\" },]);\r\n }\r\n\r\n\r\n ////var liveeventurl = \"via3media.streaming.mediaservices.windows.net/eb6b5d6e-dbec-4b39-8510-47cbc6a38b12/New Features - Part 2 - 2017-08-22 01-34-19.ism/manifest\";\r\n\r\n //// Dynamically load the amp player control\r\n //var myPlayer = amp(this.videoPlayer.nativeElement, {\r\n // /* Options */\r\n // //\"nativeControlsForTouch\": false,\r\n // autoplay: this.autoplay,\r\n // controls: true,\r\n // //sourceList: [{ src: \"//\" + liveeventurl, type: \"application/vnd.ms-sstr+xml\" },],\r\n // //width: this.width,\r\n // //height: this.height,\r\n // //id: this.id,\r\n // logo: { enabled: false },\r\n // //ampAds: {\r\n // // preRoll: {\r\n // // sourceUri: '//sr-test.azurewebsites.net/Plugins/AMP2/Preroll_amp/vast_test.xml', //be sure to include your own VAST compliant ad tag provided from your Ad Server. this is a hardcoded VAST for demo purposes \r\n // // options:\r\n // // {\r\n // // skipAd:\r\n // // {\r\n // // enabled: true,\r\n // // offset: 3\r\n // // }\r\n // // }\r\n // // },\r\n // // midRoll: [\r\n // // {\r\n // // sourceUri: '//sr-test.azurewebsites.net/Plugins/AMP2/Preroll_amp/vast_test.xml',//be sure to include your own VAST compliant ad tag provided from your Ad Server. this is a hardcoded VAST for demo purposes \r\n // // startTime: 50,\r\n // // options:\r\n // // {\r\n // // skipAd:\r\n // // {\r\n // // enabled: true,\r\n // // offset: 3\r\n // // }\r\n // // }\r\n // // }\r\n // // ],\r\n // // mainProgram: {\r\n // // source: [{\r\n // // src: this.src\r\n // // }]\r\n // // }\r\n // //}\r\n //}\r\n //);\r\n\r\n //myPlayer.ngComponent = this;\r\n\r\n //// Add playback ended event listener\r\n //myPlayer.addEventListener('ended', this.amp_ended);\r\n //myPlayer.addEventListener('seeking', this.amp_seeking);\r\n\r\n }\r\n\r\n amp_ended() {\r\n console.log(\"AMP::Playback ended\");\r\n //console.log(this.ngComponent.version);\r\n //console.log(this.ngComponent.ended);\r\n //this.ngComponent.ended.emit(null);\r\n }\r\n\r\n amp_seeking() {\r\n console.log(\"AMP::Seek event\");\r\n //this.ngComponent.seeking.emit(this.currentTime());\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ChannelFull } from \"../../interface/channel-full\";\r\n\r\n\r\n\r\n@Component({\r\n selector: \"channel-info\",\r\n templateUrl: \"./channel-info.component.html\",\r\n styleUrls: [\"./channel-info.component.scss\"]\r\n})\r\nexport class ChannelInfoComponent implements OnInit {\r\n\r\n @Input('channelId') channelId: string;\r\n\r\n public channelInfo: ChannelFull;\r\n public isLoadingChannelInfo: boolean = true;\r\n \r\n constructor(private _apiCalls: ApiCallsService) {}\r\n \r\n ngOnInit(): void {\r\n this.getChannel();\r\n }\r\n\r\n // 🚧🚧🚧 need to get channel info by id here ... \r\n getChannel() {\r\n this._apiCalls.getChannel(this.channelId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n this.channelInfo = data.body;\r\n this.isLoadingChannelInfo = false;\r\n console.info('channel info?', this.channelInfo)\r\n } else {\r\n console.error(\"error getting channel info by channel id\", data)\r\n this.isLoadingChannelInfo = false;\r\n }\r\n });\r\n }\r\n\r\n handleBrokenImage(isOwner?:boolean,userIdx?:number) {\r\n // console.info('yeeeeeeeeeeeeeee')\r\n if(isOwner) {\r\n this.channelInfo.chatRoomChatUsers[userIdx].chatUserKeyNavigation.hash = '1';\r\n } else {\r\n this.channelInfo.chatRoomChatUser1[userIdx].chatUserKeyNavigation.hash = '1';\r\n }\r\n if(!isOwner && !userIdx) this.channelInfo.chatUserKeyNavigation.hash = '1';\r\n }\r\n}\r\n\r\n","
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n

\r\n {{channelInfo.name}}\r\n

\r\n
\r\n
\r\n \r\n
\r\n

Project:

{{ channelInfo.teamProjectKeyNavigation.name }}\r\n
\r\n \r\n
\r\n

Topic:

{{channelInfo.topic || 'none'}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Last visited:

\r\n \r\n {{channelInfo.lastActivity + 'Z'|date: 'M/d/yyyy h:mm a'}}\r\n \r\n \r\n not yet visited.\r\n \r\n
\r\n
\r\n
\r\n
\r\n

Created:

{{channelInfo.dateCreated + 'Z'|date: 'M/d/yyyy'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n

Owners:   ( {{channelInfo.chatRoomChatUsers.length}} )

\r\n
\r\n
\r\n
\r\n \"user\"\r\n\r\n \r\n
\r\n {{channelInfo.chatUserKeyNavigation.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n {{channelInfo.chatUserKeyNavigation.displayName}}\r\n • Creator\r\n
\r\n \r\n \r\n
\r\n
\r\n \"user\"\r\n\r\n \r\n
\r\n {{user.chatUserKeyNavigation.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n {{user.chatUserKeyNavigation.displayName}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Members:   ( {{channelInfo.chatRoomChatUser1.length}} )

\r\n
\r\n \r\n
\r\n
\r\n \"user\"\r\n\r\n \r\n
\r\n {{user.chatUserKeyNavigation.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n {{user.chatUserKeyNavigation.displayName}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n

Welcome message:

\r\n
\r\n \r\n
\r\n {{!!channelInfo.welcome ? channelInfo.welcome : \r\n 'Here is where users can see the welcome message for the channel, so if there is no welcome message set this generic message will be shown...'\r\n }}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n","import { \r\n Component, \r\n Inject, \r\n Input, \r\n OnChanges, \r\n OnDestroy, \r\n OnInit, \r\n SimpleChanges, } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { \r\n listAnimationWrapLong, \r\n listAnimationItemLong, \r\n fadeIn, \r\n listAnimationWrapAvatar, \r\n listAnimationItemAvatar } from \"src/app/animations/global-animations\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { ChannelCard } from \"../../interface/channel-card\";\r\nimport { ChannelService } from \"src/app/services/channel-service\";\r\n\r\n\r\n@Component({\r\n selector: \"channels-history\",\r\n templateUrl: \"./channels-history.component.html\",\r\n styleUrls: [\"./channels-history.component.scss\"],\r\n animations: [ \r\n listAnimationWrapLong, \r\n listAnimationItemLong, \r\n fadeIn, \r\n listAnimationWrapAvatar, \r\n listAnimationItemAvatar ]\r\n})\r\nexport class ChannelsHistoryComponent implements OnInit, OnChanges, OnDestroy {\r\n \r\n @Input(\"userInfo\") userInfo: ChannelUser;\r\n @Input('isViewer') isViewer: boolean;\r\n\r\n public isLoadingChannels: boolean = true;\r\n public channelHistory: Array = [];\r\n // public isLoadingMoreChannels: boolean;\r\n // public channelHistoryPag: any = {};\r\n\r\n public displayChannelInfoModal: boolean = false;\r\n \r\n private subscriptions: Subscription[] = [];\r\n \r\n public displayScheduleModal: boolean = false;\r\n public displayScheduleWarning: boolean = false;\r\n public scheduleChannelMeetingObject: any = null;\r\n \r\n public displayCreateChannelModal: boolean = false;\r\n public displayCreateChannelWarning: boolean = false;\r\n \r\n public displayManageUsersModal: boolean = false;\r\n public selectedChannelId: string = null;\r\n\r\n\r\n constructor(\r\n private _apiCallsService: ApiCallsService,\r\n public _channelService: ChannelService,\r\n private _toastService: ToastNotificationService,\r\n @Inject('rippleColor') public rippleColor: string,\r\n \r\n ) {\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"closeScheduleModal\") {\r\n this.closeScheduleModal();\r\n } else if (data.type === \"closeCreateChannelModal\") {\r\n this.closeCreateChannelModal();\r\n }\r\n }));\r\n }\r\n \r\n ngOnInit(): void {\r\n }\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.userInfo) {\r\n if (!!this.userInfo) {\r\n // console.log(\"%c 👤 user info input changes CHANNELS \", consoleLogStyle, this.userInfo);\r\n this._getChannelHistoryForUser();\r\n }\r\n }\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n _getChannelHistoryForUser() {\r\n this.isLoadingChannels = true;\r\n // console.log(\"%c api call with userinfo CHANNELS \", consoleLogStyle, this.userInfo);\r\n this._apiCallsService.getChannelHistoryForChannelUserOnly6(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n this.channelHistory = data.body;\r\n // console.log(\"%c channel history CHANNELS \", consoleLogStyle, this.channelHistory);\r\n // this.channelHistoryPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // console.log(\"%c channel history CHANNELS pagination ? \", consoleLogStyle, this.channelHistoryPag);\r\n this.isLoadingChannels = false;\r\n } else {\r\n // console.error(\"error getting channel history ...\", data)\r\n this.isLoadingChannels = false;\r\n this._toastService.error(\"There was an error getting channel history.\");\r\n }\r\n });\r\n }\r\n\r\n // 💡 infinite scrolling w/ Intersection Observer api ... [(@listAnimationItemLong.done)=\"last ? runPaginationObserver() : ''\"] \r\n // 🌐 https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API \r\n // paginationObserver() {\r\n // let lastEl = document.getElementById('LastChannel'); // grab last El in list [after animation done & is in DOM] \r\n // // console.log(\"%c List anime done: run intersect observer 🎯 LAST El: \", consoleLogStyle, lastEl)\r\n // if(!!lastEl) {\r\n // let observer = new IntersectionObserver(entries => {\r\n // entries.forEach(entry => { // can observe multiple El's but will always be an Array of [entries] \r\n // // console.log(\"%c is 🎯 El intersecting? \", consoleLogStyle, entry.isIntersecting)\r\n \r\n // // || entry.intersectionRatio > 0 - also works\r\n // if (entry.isIntersecting && entry.intersectionRatio >= 0) { // bottom of view intersecting W/ the top of El \r\n // // console.log('%c 🎯 El is IN view run get next page! ', consoleLogStyle);\r\n \r\n // this._getMoreChannelHistory(this.channelHistoryPag.nextPageLink);\r\n \r\n // observer.unobserve(entry.target); // stop tracking this El, will grab next LastEl \r\n // } else {\r\n // // console.log('%c 🎯 El OUT of view. ',consoleLogStyle);\r\n // }\r\n // });\r\n // });\r\n // observer.observe(lastEl); // track the last El in list \r\n // } else {\r\n // console.info(\"no last EL?\", lastEl);\r\n // }\r\n // }\r\n\r\n // _getMoreChannelHistory(link:any) { // returns 8 results ... 2 page len avg. \r\n // this.isLoadingMoreChannels = true;\r\n // this._apiCallsService.getGenericForPagination(link)\r\n // .subscribe(data => {\r\n // if(data.status === 200) {\r\n // this.channelHistory = this.channelHistory.concat(data.body);\r\n // this.channelHistoryPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // // console.log(\"%c MORE channel history CHANNELS\", consoleLogStyle, this.channelHistory);\r\n // // console.log(\"%c channel history CHANNELS pagination ? \", consoleLogStyle, this.channelHistoryPag);\r\n // this.isLoadingMoreChannels = false;\r\n // } else {\r\n // console.error(\"error getting channel history ...\")\r\n // this._toastService.error(\"There was an error getting channel history.\");\r\n // this.isLoadingMoreChannels = false;\r\n // }\r\n // });\r\n // }\r\n\r\n // utils \r\n prevDefStopProp(e: Event) {\r\n // console.log('oi')\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n // this will close each modal \r\n clickOffChannelModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n switch (value) {\r\n case 'channel-info-modal': {\r\n this.closeChannelInfoModal();\r\n break;\r\n }\r\n case 'manage-users-modal': {\r\n this.closeManageUsersModal();\r\n break;\r\n }\r\n case 'create-channel-modal': {\r\n if (this.displayCreateChannelWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeCreateChannelModal\");\r\n } else {\r\n this.closeCreateChannelModal();\r\n }\r\n break;\r\n }\r\n case 'schedule-modal': {\r\n if (this.displayScheduleWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeScheduleModal\");\r\n } else {\r\n this.closeScheduleModal();\r\n }\r\n break;\r\n }\r\n default: return;\r\n }\r\n }\r\n\r\n // create channel modal\r\n showCreateChannelModal() {\r\n this.displayCreateChannelModal = true;\r\n }\r\n closeCreateChannelModal() {\r\n this.displayCreateChannelModal = false;\r\n this.displayCreateChannelWarning = false;\r\n }\r\n closeCreateChannelModalConfirm() {\r\n // console.log(\"esc pressed\")\r\n if(this.displayCreateChannelWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeCreateChannelModal\");\r\n } else {\r\n this.closeCreateChannelModal();\r\n }\r\n }\r\n\r\n // channel info modal\r\n showChannelInfoModal(channelId:string) {\r\n this.selectedChannelId = channelId;\r\n this.displayChannelInfoModal = true;\r\n }\r\n closeChannelInfoModal() {\r\n this.displayChannelInfoModal = false;\r\n this.selectedChannelId = null;\r\n }\r\n\r\n // manage users modal ... \r\n showManageUsersModal(channelId:string) {\r\n this.selectedChannelId = channelId;\r\n this.displayManageUsersModal = true;\r\n }\r\n closeManageUsersModal() {\r\n this.displayManageUsersModal = false;\r\n this.selectedChannelId = null;\r\n }\r\n\r\n // schedule meeting Modal\r\n showScheduleModal(channelObj) {\r\n // let channelObj = {\r\n // channelId,\r\n // name: channelName\r\n // };\r\n this.scheduleChannelMeetingObject = channelObj;\r\n this.displayScheduleModal = true;\r\n }\r\n closeScheduleModal() {\r\n this.displayScheduleWarning = false;\r\n this.displayScheduleModal = false;\r\n this.scheduleChannelMeetingObject = null;\r\n }\r\n closeScheduleModalConfirm() {\r\n if(this.displayScheduleWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeScheduleModal\");\r\n } else {\r\n this.closeScheduleModal();\r\n }\r\n }\r\n\r\n\r\n // 🚧 Channel history options dropdown ... \r\n showChannelOptionsDropdown(i: number) {\r\n const options = document.getElementById(`channel-options-dropdown-${i}`);\r\n options.classList.add('active');\r\n \r\n // also hide scrollbar ... \r\n let scrollBox = document.getElementById('channelScrollbox');\r\n scrollBox.classList.add('hidden');\r\n }\r\n\r\n hideChannelOptionsDropdown(i: number) {\r\n const options = document.getElementById(`channel-options-dropdown-${i}`);\r\n options.classList.remove('active');\r\n \r\n let scrollBox = document.getElementById('channelScrollbox');\r\n scrollBox.classList.remove('hidden');\r\n }\r\n\r\n\r\n // 🚧 favorite channel \r\n favoriteChannel(e: Event, channelHistoryId:string, channelIdx: number) {\r\n this.prevDefStopProp(e);\r\n if(!!channelHistoryId) {\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": true\r\n };\r\n this._apiCallsService.patchChannelHistoryForChannelUser(channelHistoryId, patch)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"channel favorited\")\r\n this.channelHistory[channelIdx].isFavorite = true;\r\n // this.sortByFavs();\r\n } else {\r\n // console.log(\"%c channel favorited patch \", consoleLogStyle, channelHistoryId)\r\n this._toastService.error(\"There was an error favoriting this channel.\");\r\n }\r\n });\r\n } else {\r\n this.createHistoryForFavorite(channelIdx);\r\n }\r\n }\r\n\r\n createHistoryForFavorite(channelIdx:number) {\r\n let historyObj = {\r\n \"chatUserId\": this.userInfo.channelUserId,\r\n \"chatRoomId\": this.channelHistory[channelIdx].channelId,\r\n \"isFavorite\": true\r\n };\r\n this._apiCallsService.postChannelHistoryForChannelUser(historyObj)\r\n .subscribe(res => {\r\n if(res.status === 201) {\r\n // console.log(\"channel favorited\")\r\n this.channelHistory[channelIdx].isFavorite = true;\r\n // this.sortByFavs();\r\n } else {\r\n // console.log(\"%c channel favorited create history \", consoleLogStyle, historyObj)\r\n this._toastService.error(\"There was an error favoriting this channel.\");\r\n }\r\n });\r\n }\r\n\r\n unFavoriteChannel(e: Event, channelHistoryId:string, channelIdx: number) {\r\n this.prevDefStopProp(e);\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": false\r\n };\r\n this._apiCallsService.patchChannelHistoryForChannelUser(channelHistoryId, patch)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"channel un-favorited\")\r\n this.channelHistory[channelIdx].isFavorite = false;\r\n // this.sortByFavs();\r\n } else {\r\n this._toastService.error(\"There was an error un-favoriting this channel.\")\r\n }\r\n });\r\n }\r\n\r\n // sortByFavs() {\r\n // this.channelHistory = this.channelHistory.sort((a,b) => {\r\n // return Number(b.isFavorite) - Number(a.isFavorite);\r\n // });\r\n // }\r\n\r\n handleBrokenImage(channelIdx:number, userIdx:number) {\r\n // console.info('yeeeeee')\r\n this.channelHistory[channelIdx].allChannelUsers[userIdx].hash = '1';\r\n }\r\n}\r\n","\r\n
\r\n Organization:
{{!!userInfo ? userInfo.tenant : ' '}}
\r\n
\r\n

Recent Channels

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

You do not have any channels in history.

\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { ChannelService } from '../../../services/channel-service';\r\nimport { AuthService } from '../../../../../src/app/core/auth.service';\r\nimport { ApiCallsService } from '../../../services/api-calls.service';\r\nimport * as moment from 'moment';\r\nimport { Subscription } from 'rxjs';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Validators, Editor, Toolbar, toHTML } from 'ngx-editor';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { Router } from '@angular/router';\r\nimport { filter, tap } from 'rxjs/operators';\r\n// import { ChannelUser } from '../../interface/channel-user';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-chat',\r\n templateUrl: './chat.component.html',\r\n styleUrls: ['./chat.component.scss']\r\n\r\n})\r\nexport class ChatComponent implements OnInit, OnDestroy {\r\n @Input() currentIntakeUser: any;\r\n @Input() teamProjectId: any;\r\n @Input() incomingChannelId: string;\r\n @Input() isDirectPopUp: boolean;\r\n\r\n public isQuickMeeting: boolean;\r\n\r\n public user: any = {}; // IDP user object\r\n public messageClassName: string = '';\r\n public messages: any = []; // <<<--- need type interface here ... \r\n public message: string = ''; // <<<--- need type interface here ... \r\n\r\n public scrollBox: any; // for pagination ... \r\n public scrollTopBlock: boolean = false; // for pagination ... \r\n public preLoad: boolean = true;\r\n public hasAccess: boolean = false;\r\n public typing: boolean = false;\r\n public typers: any = [];\r\n public typingReset: boolean = false;\r\n public isPrivate: boolean = true;\r\n public privateCheck: boolean = false;\r\n\r\n public callerTyping: boolean = false;\r\n public mytime: any;\r\n\r\n public firstMessageDate: string = '';\r\n // public sub: any;\r\n // public today: any = new Date();\r\n public loadMoreMessagesAvailable: boolean = false;\r\n public pagination: any = {};\r\n\r\n public channelId: string;\r\n\r\n // public orderDateInterVal: any;\r\n // public orderTime = '2019-10-31 17:40:57.98';\r\n // public difference: any;\r\n // public orderDate: any;\r\n // public msgCount: any = 0;\r\n // public mytime1: any;\r\n // public firstMessageDateTime: any;\r\n\r\n // public officers: any = {};\r\n // public intakeOfficer: any = {};\r\n // public selectedOfficer: any;\r\n // public currentIntakeUser: any = {};\r\n\r\n public channelInfo: any;\r\n public channelDisplayName: string = \"\";\r\n\r\n public isShiftDown = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n //Message Input\r\n public newMessage: FormGroup = new FormGroup({\r\n content: new FormControl('', Validators.required()),\r\n });\r\n\r\n public editor: Editor = new Editor({\r\n features: {\r\n linkOnPaste: false//doesnt work\r\n }\r\n });\r\n public toolbar: Toolbar = [\r\n ['bold', 'italic', 'underline', 'strike', 'code']\r\n ];\r\n\r\n public logoIcon2: any = {\r\n \"logoblack\": \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Icon%202/logo-black.png\",\r\n \"logobluewhite\": \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Icon%202/logo-blue-white.png\",\r\n \"logogreen\": \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Icon%202/logo-green.png\",\r\n \"logoblackblue\": \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Icon%202/logo-via%20black-blue.png\",\r\n \"logoviablack\": \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Icon%202/logo-via%20black.png\",\r\n \"logowhiteblue\": \"https://via3filescdnstrg.blob.core.usgovcloudapi.net/web-images/Logo%20Icon%202/logo-white-blue.png\",\r\n };\r\n\r\n // not sure on the search ... maybe used for the @ user functionallity ... \r\n public userSearchList: any[] = [];\r\n public userSearchString: string = '';\r\n public userSearchActivated: boolean = false;\r\n public userSearchCursor: any;\r\n\r\n public isViewer: boolean = false;\r\n\r\n constructor(\r\n private _chManageService: ProjectChannelService,\r\n public _toastService: ToastNotificationService,\r\n private _apiCallsService: ApiCallsService,\r\n private _channelService: ChannelService,\r\n public _authService: AuthService,\r\n private router: Router\r\n ) {\r\n if (this._channelService) {\r\n this.subscriptions.push(this._channelService.onPopulateMessagesEvent2$.subscribe((channelId: any) => { //triggered from io component\r\n // alert(\"populate message subscribe \" + channelId);\r\n //console.log(\"populate messages \" + channelId + \" \" + this.channelId);\r\n if (!this.isDirectPopUp) {\r\n this.channelId = channelId;\r\n this.preLoad = true;\r\n this.messages = [];\r\n this._getChannel(channelId);\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onMessageToClientEvent$.subscribe((message: any) => {\r\n // console.log(message);\r\n // console.log(message.content);\r\n //alert(\"channelId: \" + this.channelId + \"message.ChannelId \" + message.channelId);\r\n if (message.channelId.toLowerCase() === this.channelId.toLowerCase()) {\r\n let messageId = message.channelUserKeyNavigation.channelUserId.toUpperCase();\r\n let firstMessageId;\r\n let firstMessageDate;\r\n let firstTimeLength = 0;\r\n let isFirstMessage: boolean = false;\r\n if (this.messages.length === 0) {\r\n firstMessageId = messageId;\r\n firstMessageDate = new Date();\r\n isFirstMessage = true;\r\n // console.log(\"message.length is 0\")\r\n } else {\r\n firstMessageId = this.messages[0].channelUserKeyNavigation.channelUserId.toUpperCase();\r\n firstMessageDate = new Date(this.messages[0].when);\r\n firstTimeLength = (firstMessageDate.getHours() * 60) + firstMessageDate.getMinutes();\r\n }\r\n //firstMessageId = this.messages[0].channelUserKeyNavigation.channelUserId.toUpperCase();\r\n let messageDate = new Date(message.when);\r\n let messageTimeLength = (messageDate.getHours() * 60) + messageDate.getMinutes();\r\n //firstMessageDate = new Date(new Date(this.messages[0].when).toDateString());\r\n if (firstMessageId === messageId) {\r\n if (isFirstMessage) {\r\n message.sameId = false;\r\n } else {\r\n message.sameId = true;\r\n }\r\n } else {\r\n message.sameId = false;\r\n }\r\n if (messageDate.toDateString() === firstMessageDate.toDateString()) {\r\n if (isFirstMessage) {\r\n message.sameDate = false;\r\n } else {\r\n message.sameDate = true;\r\n if (messageTimeLength - firstTimeLength < 10) {\r\n message.closeTime = true;\r\n }\r\n }\r\n } else {\r\n message.sameDate = false;\r\n }\r\n // if (this.checkURL(message.content)) {\r\n // message.isURL = true;\r\n // // also checks if an image\r\n // if (this.checkImage(message.content))\r\n // message.isImage = true;\r\n // } else {\r\n // message.isURL = false;\r\n // }\r\n this.messages.unshift(message);\r\n // fix scroll on incoming message (works) //\r\n this.fixScroll();\r\n }\r\n if (this.currentIntakeUser) {\r\n if (this.currentIntakeUser.isIntakeOfficer && this.currentIntakeUser.chatUserKeyNavigation.channelUserId.toLowerCase() !== message.channelUserId.toLowerCase()) {\r\n if (message.channelId.toLowerCase() !== this.channelId.toLowerCase()) {\r\n this._updateUnreadMessageCount(message.channelId);\r\n }\r\n }\r\n }\r\n //mark message as read using SignalR or API request for the people in the channel at the time the message is sent\r\n //alert(JSON.stringify(this.intakeOfficer));\r\n //this.onUpdateUnreadMessageCountEvent.next(message.channelId);\r\n // if(message.channelUserKeyNavigation.channelUserId.toUpperCase() === this._authService._user.profile.sub.toUpperCase()) {\r\n // setTimeout(() => {\r\n // this.scrollToBottom();\r\n // }, 1);this.scrollToBottom()\r\n // }\r\n }));\r\n\r\n //this._channelService.onPopulateMessagesEvent$.subscribe((message: any) => {\r\n // console.log(\"PopulateMessagesEvent \" + message.message);\r\n // this.messages.push(message);\r\n //});\r\n\r\n this.subscriptions.push(this._channelService.isTypingEvent$.subscribe((message: any) => {\r\n if (this.channelId.toLowerCase() === message.channelId.toLowerCase()) { //temporary fix, typing is being sent to everyone\r\n //alert(message.channelUserId); \r\n if (this.user.sub.toUpperCase() !== message.user.channelUserId.toUpperCase()) {// incase user has multiple browsers open\r\n // if (this.typing === false) {\r\n if (this.typers.some(user => user.channelUserId === message.user.channelUserId)) {\r\n return;\r\n } else {\r\n this.typers.push(message.user);\r\n }\r\n this.typing = true;\r\n // fix scroll on typing (works) //\r\n this.fixScroll();\r\n // console.log(\"subscribe \", this.typing);\r\n this.mytime = setTimeout(() => {\r\n let filterList = this.typers;\r\n this.typers = filterList.filter(user => {\r\n return user.channelUserId !== message.user.channelUserId\r\n });\r\n if (this.typers.length < 1) {\r\n this.typing = false;\r\n } else {\r\n this.typing = true;\r\n }\r\n // console.log(\"subscribe \", this.typing);\r\n }, 3000);\r\n // }\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onNudgeEvent$.subscribe(() => {\r\n _toastService.info(\"You have been Nudge\")\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onHighFiveEvent$.subscribe((displayname: any) => {\r\n _toastService.user(displayname, \"Gave a High Five!\")\r\n }));\r\n\r\n // ❌ i think this was for testing ... may can remove ... \r\n // this.subscriptions.push(this._channelService.onPerfTestEvent$.subscribe((perfObj: any) => {\r\n // let theLoop: (i: number) => void = (i: number) => {\r\n // setTimeout(() => {\r\n // this._channelService.sendMessageToChannel(\"Perf Test: \" + i, perfObj.fullChannelName);\r\n // if (--i) {\r\n // theLoop(i);\r\n // }\r\n // }, 200);\r\n // };\r\n // theLoop(perfObj.repetitions);\r\n // }));\r\n\r\n this.subscriptions.push(this._channelService.onWhoCommandEvent$.subscribe((whoObj: any) => {\r\n alert(\"Display Name: \" + whoObj.displayName + \"\\n\" + \"Status: \" + whoObj.PresenceStatus + \"\\n\" + \"You are in the following channels: \\n\" + whoObj.channelsList.join('\\n'))\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJoinEvent$.subscribe(() => {\r\n //this gets called on all chat components when a new componet is started\r\n this.hasAccess = true;\r\n if (this.currentIntakeUser) {\r\n this.messages = [];\r\n this.preLoad = true;\r\n }\r\n // this._toastService.info(this.channelId);\r\n if (this.channelId) {\r\n // this._toastService.info(this.channelId + \" : \" + this.preLoad);\r\n // if (this.messages.length < 1) {\r\n if (this.preLoad) {\r\n // this._toastService.info(\"onJoinEvent: \" + this.channelId);\r\n // this._toastService.info(this.channelId + \" : \" + this.messages.length);\r\n if (this.channelInfo) {\r\n this.retrieveInitialMessages(this.channelId);\r\n } else {\r\n this._getChannel(this.channelId, true)\r\n }\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJoinAccessDeniedEvent$.subscribe(() => {\r\n this.hasAccess = false;\r\n this.preLoad = false;\r\n console.error(\"onJoinAccessDeniedEvent: failed to join\")\r\n // console.log(\"has access2 \" + this.hasAccess);\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onSharedFileBeginUploadEvent$.subscribe((channelId: any) => {\r\n this._channelService.sendMessageToChannel(\"A file has began uploading\", channelId);\r\n }));\r\n\r\n //this.subscriptions.push(this._channelService.onUserLeaveEvent$.subscribe((userObj: any) => {\r\n // this._channelService.sendMessageToChannel(userObj.displayName + \" has left the room.\", userObj.channelId);\r\n //}));\r\n\r\n this.subscriptions.push(this._channelService.onUpdateChatComponentEvent$.subscribe((channelId: any) => {\r\n //console.log(\"Deleteall update\");\r\n this.preLoad = true;\r\n this.messages = [];\r\n // this._toastService.info(\"onUpdateChatComponentEvent: \" + channelId);\r\n if (this.channelInfo) {\r\n this.retrieveInitialMessages(channelId);\r\n } else {\r\n this._getChannel(channelId, true)\r\n }\r\n }));\r\n\r\n // ❌ i dont think any of the below events fire, dont see alerts ??? \r\n this.subscriptions.push(this._channelService.onDeleteMessagesPermissionDeniedEvent$.subscribe(() => {\r\n alert(\"You do not have permission to delete messages in this channel!\");\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onAddOwnerEvent$.subscribe((username: any) => {\r\n alert(username + \" was added as an owner\");\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onAddMemberEvent$.subscribe((username: any) => {\r\n alert(username + \" was added as a member\");\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onRemoveMemberEvent$.subscribe((username: any) => {\r\n alert(username + \" was removed as a member\");\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onRemoveOwnerEvent$.subscribe((username: any) => {\r\n alert(username + \" was removed as an owner\");\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onListOwnersOrMembersEvent$.subscribe((usernames: any) => {\r\n alert(usernames.join('\\n'));\r\n }));\r\n\r\n // what ... ??? \r\n this.subscriptions.push(this._channelService.onWhereEvent$.subscribe((channelsList: any) => {\r\n alert(\"You are in the following channels: \\n\" + channelsList.join('\\n'));\r\n }));\r\n } else {\r\n this._toastService.error(\"Channel Service not initialized.\");\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n //console.log(\"incomingChannelId: \" + this.incomingChannelId);\r\n //this.hasAccess = true;\r\n this.user = this._authService._user.profile;\r\n\r\n if(this.user.role) {\r\n this.isViewer = this.user.role === \"Viewer\"; // NDIS - Streaming\r\n }\r\n\r\n this._getChannelUser();\r\n // this._getIntakeUser();\r\n // console.log(this.currentIntakeUser);\r\n if (this.currentIntakeUser) {\r\n if (!this.currentIntakeUser.isIntakeOfficer) {\r\n this._getChannelByName(this.currentIntakeUser);\r\n }\r\n } else if (this.incomingChannelId) {\r\n //console.log(\"this.incomingChannelId: \" + this.incomingChannelId);\r\n this.channelId = this.incomingChannelId;\r\n this._getChannel(this.incomingChannelId);\r\n }\r\n this.fixScroll();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n this.editor.destroy();\r\n // clearInterval(this.orderDateInterVal);\r\n }\r\n\r\n public figureOutTimeSincePost(when:any): number {\r\n // Convert the \"when\" into a usable date object, and remember it is a UTC date\r\n var t = when.replace('T', ' ').replace('+00:00', '').split(/[- :]/);\r\n var whenAsUsableDate = new Date(Date.UTC(t[0], t[1] - 1, t[2], t[3], t[4], t[5]));\r\n const date: number = moment(whenAsUsableDate).valueOf();\r\n // When getting the date, we need to get the UTC date, because we store UTC date in the db\r\n var timeDiff = Math.floor((new Date().getTime() - date) / 1);\r\n return Number(timeDiff);\r\n }\r\n\r\n public initiateSendMessage(): void {\r\n if (this.newMessage.valid && this.hasAccess) {\r\n // console.log(\"initial message\", this.newMessage.value.content);\r\n // this.findUsersInMessage(this.newMessage.value.content);\r\n let message: string = this.newMessage.value.content;\r\n let users = this.userExtractor(message);\r\n let url = this.router.url;\r\n if (users.length > 0) {\r\n this._checkUserExists(users);\r\n } else {\r\n this.sendMessage({ \"message\": message, \"atUsers\": [], \"url\": url });\r\n }\r\n }\r\n }\r\n\r\n public sendMessage(messageContents:any): void {\r\n // console.log(messageContents);\r\n messageContents.message = this.addBlankTag(messageContents.message);\r\n // console.log(messageContents.message);\r\n this._channelService.sendMessageToChannelJSON(messageContents, this.channelId);\r\n this.clearSearch();\r\n this.editor.setContent('');\r\n }\r\n\r\n private addBlankTag(message: string) {\r\n let aTagObjects = this.aTagExtractor(message);\r\n let newMessage: any = message.split(\"\");\r\n for (let i = aTagObjects.length - 1; i >= 0; i--) {\r\n let aTag = aTagObjects[i].string;\r\n let aTagArray = this.addTarget(aTag);;\r\n newMessage.splice(aTagObjects[i].first, aTagObjects[i].length, ...aTagArray);\r\n }\r\n // console.log(newMessage.join(\"\"))\r\n return newMessage.join(\"\");\r\n }\r\n\r\n private aTagExtractor(message:any) {\r\n let expression = /\\/gi;\r\n let regex = new RegExp(expression);\r\n let result = message.matchAll(regex);\r\n let aTagObjects = [];\r\n for (let match of result) {\r\n aTagObjects.push({\r\n first: match.index,\r\n last: match.index + match[0].length,\r\n length: match[0].length,\r\n string: match[0]\r\n });\r\n }\r\n // console.log(aTagObjects);\r\n return aTagObjects;\r\n }\r\n\r\n private addTarget(aTag: string) {\r\n let list = ['target=\"_self\"', 'target=\"_parent\"', 'target=\"_top\"', 'target=\"\"']\r\n let newTag: any = aTag;\r\n let blank: any = 'target=\"_blank\"'\r\n if (\r\n list.some((sub) => {\r\n let check = newTag.includes(sub)\r\n if (check) {\r\n newTag = newTag.replace(sub, blank)\r\n }\r\n return check;\r\n })\r\n ) {\r\n newTag = newTag.split(\"\");\r\n return newTag\r\n } else if (aTag.includes(blank)) {\r\n newTag = newTag.split(\"\");\r\n return newTag\r\n } else {\r\n blank = \" \" + blank;\r\n blank = blank.split(\"\");\r\n newTag = newTag.split(\"\");\r\n newTag.splice(2, 0, ...blank);\r\n return newTag;\r\n }\r\n }\r\n\r\n private typingEvent(): void {\r\n if (this.callerTyping === false) {\r\n this.callerTyping = true;\r\n this._channelService.typingEvent(this.channelId);\r\n setTimeout(() => {\r\n // console.log(this.callerTyping);\r\n this.callerTyping = false;\r\n // console.log(this.callerTyping);\r\n }, 7000);\r\n }\r\n }\r\n\r\n public onKeyPress(event: KeyboardEvent) {\r\n // console.log(event);\r\n switch (event.key) {\r\n case \"Enter\":\r\n // Create New Line if shift and enter are down; otherwise, send message\r\n // makes sure not to send an empty block; regex clears spaces\r\n let formattedMessage = this.newMessage.value.content.replace(/\\s+/g, '');\r\n if (!this.isShiftDown && formattedMessage !== \"

\")\r\n this.initiateSendMessage();\r\n // event.target.form.dispatchEvent(new Event(\"submit\", { cancelable: true }));\r\n // event.preventDefault();\r\n // let textarea = document.querySelector(\"#message\" + this.channelId)\r\n // // document.documentElement.style.setProperty('--chat-textarea-height', \"4rem\");\r\n break;\r\n case \"Shift\":\r\n this.isShiftDown = true;\r\n break;\r\n case \"Control\":\r\n case \"Alt\":\r\n case \"Command\":\r\n case \"Unidentified\":\r\n case \"CapsLock\":\r\n case \"Escape\":\r\n case \"Insert\":\r\n case \"Home\":\r\n case \"End\":\r\n case \"OS\":\r\n case \"ArrowLeft\":\r\n case \"ArrowRight\":\r\n case \"ArrowDown\":\r\n case \"ArrowUp\":\r\n this.typingEvent();\r\n break;\r\n case \" \":\r\n if (this.userSearchActivated) {\r\n this.clearSearch();\r\n }\r\n this.typingEvent();\r\n break;\r\n case \"@\":\r\n this.clearSearch();\r\n this.checkSetSearch(false);\r\n this.typingEvent();\r\n break;\r\n default:\r\n if (this.userSearchActivated) {\r\n // console.log(\"activated\");\r\n this.setQueryString(event);\r\n }\r\n // console.log(this.userSearchString);\r\n this.typingEvent();\r\n break;\r\n }\r\n }\r\n\r\n public onKeyPressUp(event) {\r\n if (event.key === \"Shift\") {\r\n this.isShiftDown = false;\r\n }\r\n }\r\n\r\n private findCursor() {\r\n if (window.getSelection && window.getSelection().getRangeAt) {\r\n return window.getSelection().getRangeAt(0);\r\n } else {\r\n console.error(\"browser does not support range\");\r\n return null;\r\n }\r\n }\r\n\r\n // unused input here 'byAddButton' ... \r\n private setQueryString(event: KeyboardEvent, byAddButton: boolean = false) {\r\n if (!this.userSearchCursor) {\r\n return false;\r\n }\r\n let currentCursor = this.findCursor();\r\n // console.log(\"current cursor offset\", currentCursor.startOffset);\r\n // console.log(\"search cursor offset\", this.userSearchCursor.startOffset)\r\n let diff = currentCursor.startOffset - this.userSearchCursor.startOffset;\r\n // console.log(\"diff\", diff);\r\n // console.log(\"string length + 1\", this.userSearchString.length + 1);\r\n let splitIndex = diff - 1;\r\n let splitString = this.userSearchString.split('');\r\n switch (true) {\r\n case (diff == this.userSearchString.length + 1):\r\n if (event.keyCode == 8) {\r\n splitString.splice(splitIndex - 1, 1)\r\n this.userSearchString = splitString.join('');\r\n } else if (event.keyCode == 46) {\r\n this.clearSearch();\r\n } else {\r\n this.userSearchString += event.key;\r\n }\r\n if (this.userSearchString.length > 0) {\r\n // console.log(\"going to search!!!\")\r\n this._getUsersFromChannelBySearchQuery(this.userSearchString);\r\n } else {\r\n this.userSearchList = [];\r\n }\r\n break;\r\n case (diff < this.userSearchString.length + 1 && diff > 0):\r\n // console.log(\"new Diff: \" + splitIndex);\r\n if (event.keyCode == 8) {\r\n if (diff > 1) {\r\n splitString.splice(splitIndex - 1, 1)\r\n this.userSearchString = splitString.join('');\r\n } else {\r\n this.clearSearch();\r\n }\r\n } else if (event.keyCode == 46) {\r\n splitString.splice(splitIndex, 1)\r\n this.userSearchString = splitString.join('');\r\n } else {\r\n splitString.splice(splitIndex, 0, event.key)\r\n this.userSearchString = splitString.join('');\r\n }\r\n if (this.userSearchString.length > 0) {\r\n this._getUsersFromChannelBySearchQuery(this.userSearchString);\r\n } else {\r\n this.userSearchList = [];\r\n }\r\n break;\r\n default:\r\n this.clearSearch();\r\n break;\r\n }\r\n }\r\n\r\n private clearSearch() {\r\n this.userSearchList = [];\r\n this.userSearchActivated = false;\r\n this.userSearchString = \"\";\r\n this.userSearchCursor = null;\r\n }\r\n\r\n private checkSetSearch(addFromButton: boolean = false) {\r\n // this.messageEditorElement = document.querySelector(`#message${this.channelId} .NgxEditor__Content`)\r\n // console.log(this.messageEditorElement);\r\n let nodeInfo: any = this.getNodeInfo();\r\n switch (nodeInfo.type) {\r\n case 1://Element\r\n if (this.checkPrevSpace(nodeInfo)) {\r\n if (addFromButton) {\r\n this.addTextAndCursor(nodeInfo, '@');\r\n break;\r\n }\r\n this.userSearchActivated = true;\r\n this.userSearchCursor = nodeInfo.cursor;\r\n break;\r\n } else if (addFromButton) {\r\n this.addTextAndCursor(nodeInfo, '@');\r\n }\r\n case 3://Text\r\n if (this.checkPrevSpace(nodeInfo)) {\r\n if (addFromButton) {\r\n this.addTextAndCursor(nodeInfo, '@');\r\n break;\r\n }\r\n this.userSearchActivated = true;\r\n this.userSearchCursor = nodeInfo.cursor;\r\n } else if (addFromButton) {\r\n // console.log(\"first cursor\");\r\n this.addTextAndCursor(nodeInfo, ' @');\r\n }\r\n break;\r\n default:\r\n this._toastService.info(\"Found Node Type: \" + nodeInfo.type)\r\n // console.log(nodeInfo.type)\r\n break;\r\n }\r\n }\r\n\r\n private addTextAndCursor(nodeInfo: any, text: string) {\r\n // console.log(\"addTextAndCursor cursor\", nodeInfo.cursor)\r\n let cursor = nodeInfo.cursor;\r\n let newCaret = cursor.startOffset;\r\n this.addStringToMessage(text);\r\n // this.checkSetSearch(false);\r\n let msg: any = nodeInfo.cursor.startContainer;\r\n // let newCaret = msg.innerText ? msg.innerText.length : msg.data.length;\r\n let setpos = document.createRange();\r\n let set = window.getSelection();\r\n // console.log(\"newCaret location\", newCaret + text.length);\r\n /// sets focus 1 offset to mimiick keypressdown\r\n setpos.setStart(msg.childNodes[0] ? msg.childNodes[0] : msg, newCaret + text.length);\r\n setpos.collapse(true);\r\n set.removeAllRanges();\r\n set.addRange(setpos);\r\n if (msg.childNodes[0]) {\r\n msg.focus()\r\n }\r\n this.userSearchCursor = this.getNodeInfo().cursor;\r\n //Real cursor location\r\n // setpos.setStart(msg.childNodes[0] ? msg.childNodes[0] : msg, newCaret + text.length);\r\n // setpos.collapse(true);\r\n // set.removeAllRanges();\r\n // set.addRange(setpos);\r\n // if (msg.childNodes[0]) {\r\n // msg.focus()\r\n // }\r\n // console.log(\"addTextAndCursor cursor2\", this.userSearchCursor)\r\n this.userSearchActivated = true;\r\n }\r\n\r\n private checkPrevSpace(node: any,) {\r\n //offset is increased for press down\r\n let data = node.data\r\n // console.log(\"checkPrevSpace cursor\", node.cursor);\r\n // console.log(node.data);\r\n let prevChar: any, nextChar: any;\r\n if (data[node.cursor.startOffset - 1]) {\r\n prevChar = data[node.cursor.startOffset - 1];\r\n nextChar = data[node.cursor.startOffset];\r\n // console.log({ data: data, offset: node.cursor.startOffset, prevChar: prevChar, nextChar: nextChar })\r\n if (prevChar != ' ' || !prevChar) {\r\n // console.log(\"search cant start\");\r\n return false;\r\n }\r\n if (!nextChar || nextChar == \" \") {\r\n // console.log(\"start search\");\r\n return true;\r\n } else {\r\n // console.log(\"search cant start\");\r\n return false;\r\n }\r\n }\r\n // console.log(\"start search\");\r\n return true;\r\n }\r\n\r\n public replaceTextFromSearch(text: string) {\r\n let parentNode = this.userSearchCursor.startContainer;\r\n let newString, newNode;\r\n switch (parentNode.nodeType) {\r\n case 1://Element\r\n newString = this.newMessageString(parentNode.innerText, text);\r\n newNode = document.createTextNode(newString)\r\n this.userSearchCursor.startContainer.innerText = '';\r\n this.userSearchCursor.insertNode(newNode);\r\n // console.log(newString);\r\n this.clearSearch();\r\n break;\r\n case 3://Text\r\n newString = this.newMessageString(parentNode.data, text);\r\n newNode = document.createTextNode(newString)\r\n this.userSearchCursor.startContainer.data = '';\r\n this.userSearchCursor.insertNode(newNode);\r\n // console.log(newString);\r\n this.clearSearch();\r\n break;\r\n default:\r\n this._toastService.info(\"Found Node Type: \" + parentNode.nodType)\r\n // console.log(parentNode.nodType)\r\n break;\r\n }\r\n }\r\n\r\n public newMessageString(parentString: any, name: string) {\r\n let splitNodeString: any = parentString.split('');\r\n splitNodeString.splice(this.userSearchCursor.startOffset + 1, this.userSearchString.length, name);\r\n return splitNodeString.join('');\r\n }\r\n\r\n private getNodeInfo() {\r\n let cursor = this.findCursor();\r\n let parentNode: any = cursor.startContainer;\r\n // console.log(cursor);\r\n switch (parentNode.nodeType) {\r\n case 1://Elemet\r\n return { type: 1, data: parentNode.innerText, cursor: cursor }\r\n case 3://Text\r\n return { type: 3, data: parentNode.data, cursor: cursor }\r\n }\r\n }\r\n\r\n resizeTextarea() {\r\n let textarea: any = document.querySelector(\"#message\" + this.channelId)\r\n // console.log(textarea.scrollHeight);\r\n // console.log(textarea.scrollTop);\r\n if (textarea.scrollHeight > 38 && (textarea.scrollTop > 0 || textarea.scrollTop > 31)) {\r\n document.documentElement.style.setProperty('--chat-textarea-height', \"6rem\");\r\n } else {\r\n document.documentElement.style.setProperty('--chat-textarea-height', \"4rem\");\r\n }\r\n }\r\n\r\n\r\n // todo: create a click handler method to handle the keypress event for the input box\r\n // todo: in the keypress event handler, detect pressing enter and send input contents as a message, then clear input\r\n // todo: if not pressing enter, then call a private typing event method \r\n\r\n public sendMessageToClient(): void {\r\n const data = `${this.newMessage.value.content}`;\r\n var channelName = document.location.pathname;\r\n this._channelService.sendMessageToClient(data, channelName);\r\n }\r\n\r\n retrieveInitialMessages(channelId: any) {\r\n // alert(channelId)\r\n // console.log(\"ChannelId: \" + channelId);\r\n this.scrollBox = document.querySelector(\"#messages\" + this.channelId);\r\n this._apiCallsService.getInitialMessages(channelId)\r\n .subscribe(res => {\r\n if(res.status === 200) {\r\n // console.log(\"initial messages?\", res.body)\r\n let messages: any = res.body;\r\n messages.forEach((message, i) => {\r\n let messageId = message.channelUserKeyNavigation.channelUserId.toUpperCase();\r\n let previousMessageId = 1;\r\n let messageDate = new Date(message.when);\r\n let messageTimeLength = (messageDate.getHours() * 60) + messageDate.getMinutes();\r\n let previousDate = new Date();\r\n let previousTimeLength = 0;\r\n // \r\n if(message.channelUserKeyNavigation.channelUserId === this._authService._userInfo.sub) {\r\n this.subscriptions.push(this._authService.displayNameBehaviorSubject.pipe(filter(n => n !== ''),tap((name) => {\r\n message.channelUserKeyNavigation.displayName = name;\r\n // for welcome message ... \r\n if(this.channelInfo.chatUserKeyNavigation.channelUserId === this._authService._userInfo.sub) {\r\n this.channelInfo.chatUserKeyNavigation.displayName = name;\r\n }\r\n })).subscribe());\r\n this.subscriptions.push(this._authService.userHashBehaviorSubject.pipe(filter(h => h !== ''),tap((hash) => {\r\n message.channelUserKeyNavigation.hash = hash;\r\n // for welcome message ... \r\n if(this.channelInfo.chatUserKeyNavigation.channelUserId === this._authService._userInfo.sub) {\r\n this.channelInfo.chatUserKeyNavigation.hash = hash;\r\n }\r\n })).subscribe());\r\n }\r\n \r\n if (i < messages.length - 1) {\r\n previousMessageId = messages[i + 1].channelUserKeyNavigation.channelUserId.toUpperCase();\r\n previousDate = new Date(messages[i + 1].when);\r\n previousTimeLength = (previousDate.getHours() * 60) + previousDate.getMinutes();\r\n };\r\n if (messageId === previousMessageId) {\r\n message.sameId = true;\r\n } else {\r\n message.sameId = false;\r\n }\r\n if (messageDate.toDateString() === previousDate.toDateString()) {\r\n message.sameDate = true;\r\n if (messageTimeLength - previousTimeLength < 10) {\r\n message.closeTime = true;\r\n }\r\n } else {\r\n message.sameDate = false;\r\n }\r\n // if (this.checkURL(message.content)) {\r\n // message.isURL = true;\r\n\r\n // if (this.checkImage(message.content))\r\n // message.isImage = true;\r\n\r\n // } else {\r\n // message.isURL = false;\r\n // }\r\n });\r\n this.messages = messages;\r\n this.preLoad = false;\r\n\r\n if (this.messages.length > 0) {\r\n\r\n // 🚧 fix scroll on load (may have issue sometimes delayed on page load) //\r\n this.fixScroll();\r\n\r\n this.firstMessageDate = this.messages[0].when;\r\n this.pagination = {};\r\n this.pagination = JSON.parse(res.headers.get('X-Pagination'));\r\n // console.log(\"pag\", this.pagination);\r\n this.checkForPagination();\r\n } else {\r\n this.firstMessageDate = new Date().getTime().toString();\r\n }\r\n if (this.loadMoreMessagesAvailable) {\r\n this.scrollTopBlock = true;\r\n this.retrieveMoreMessages();\r\n } else if (this.channelInfo.welcome) {\r\n this.messages.push(this.welcomeMessage());\r\n } else {\r\n this.messages.push(this.defaultNoMoreMessages());\r\n }\r\n } else {\r\n console.error(\"error getting inital messages\", res);\r\n this._toastService.error(\"Could not get messages, please refresh the page\");\r\n }\r\n });\r\n }\r\n\r\n retrieveMoreMessages() {\r\n // this._apiCallsService.getGenericForPagination(this.pagination.nextPageLink + '&loadDate=' + moment(this.firstMessageDate).format('YYYY-MM-DD[T]HH:mm:ss.SSSZ'))\r\n this._apiCallsService.getGenericForPagination(this.pagination.nextPageLink)\r\n .subscribe(res => {\r\n if(res.status === 200) {\r\n let messages: any = res.body;\r\n messages.forEach((message, i) => {\r\n let messageId = message.channelUserKeyNavigation.channelUserId.toUpperCase();\r\n let previousMessageId = 1;\r\n let messageDate = new Date(message.when);\r\n let messageTimeLength = (messageDate.getHours() * 60) + messageDate.getMinutes();\r\n let previousDate = new Date();\r\n let previousTimeLength = 0;\r\n // \r\n if(message.channelUserKeyNavigation.channelUserId === this._authService._userInfo.sub) {\r\n this.subscriptions.push(this._authService.displayNameBehaviorSubject.pipe(filter(n => n !== ''),tap((name) => {\r\n message.channelUserKeyNavigation.displayName = name;\r\n // for welcome message ... \r\n if(this.channelInfo.chatUserKeyNavigation.channelUserId === this._authService._userInfo.sub) {\r\n this.channelInfo.chatUserKeyNavigation.displayName = name;\r\n }\r\n })).subscribe());\r\n this.subscriptions.push(this._authService.userHashBehaviorSubject.pipe(filter(h => h !== ''),tap((hash) => {\r\n message.channelUserKeyNavigation.hash = hash;\r\n // for welcome message ... \r\n if(this.channelInfo.chatUserKeyNavigation.channelUserId === this._authService._userInfo.sub) {\r\n this.channelInfo.chatUserKeyNavigation.hash = hash;\r\n }\r\n })).subscribe());\r\n }\r\n \r\n if (i === 0) {\r\n let lastMessageId = this.messages[this.messages.length - 1].channelUserKeyNavigation.channelUserId.toUpperCase();\r\n let lastMessageDate = new Date(this.messages[this.messages.length - 1].when);\r\n let lastTimeLength = (lastMessageDate.getHours() * 60) + lastMessageDate.getMinutes();\r\n if (lastMessageId === messageId) {\r\n this.messages[this.messages.length - 1].sameId = true;\r\n }\r\n if (lastMessageDate.toDateString() === messageDate.toDateString()) {\r\n this.messages[this.messages.length - 1].sameDate = true;\r\n if (messageTimeLength - lastTimeLength < 10) {\r\n this.messages[this.messages.length - 1].closeTime = true;\r\n }\r\n }\r\n }\r\n if (i < messages.length - 1) {\r\n previousMessageId = messages[i + 1].channelUserKeyNavigation.channelUserId.toUpperCase();\r\n previousDate = new Date(messages[i + 1].when);\r\n previousTimeLength = (previousDate.getHours() * 60) + previousDate.getMinutes();\r\n }\r\n if (messageId === previousMessageId) {\r\n message.sameId = true;\r\n } else {\r\n message.sameId = false;\r\n }\r\n if (messageDate.toDateString() === previousDate.toDateString()) {\r\n message.sameDate = true;\r\n if (messageTimeLength - previousTimeLength < 10) {\r\n message.closeTime = true;\r\n }\r\n } else {\r\n message.sameDate = false;\r\n }\r\n // if (this.checkURL(message.content)) {\r\n // message.isURL = true;\r\n // if (this.checkImage(message.content))\r\n // message.isImage = true;\r\n // } else {\r\n // message.isURL = false;\r\n // }\r\n this.messages.push(message);\r\n })\r\n // check for pagination\t\r\n this.pagination = JSON.parse(res.headers.get('X-Pagination'));\r\n this.checkForPagination();\r\n if (!this.loadMoreMessagesAvailable && this.channelInfo.welcome) {\r\n this.messages.push(this.welcomeMessage());\r\n } else if (!this.loadMoreMessagesAvailable) {\r\n this.messages.push(this.defaultNoMoreMessages());\r\n }\r\n } else {\r\n console.error(\"error getting more messages\", res)\r\n }\r\n });\r\n }\r\n\r\n checkForPagination() {\r\n this.loadMoreMessagesAvailable = false;\r\n if (Number(this.pagination.currentPage) < Number(this.pagination.totalPages)) {\r\n this.loadMoreMessagesAvailable = true;\r\n };\r\n this.scrollTopBlock = false;\r\n }\r\n\r\n // ... \r\n fixScroll() {\r\n let scrollEl: any = document.getElementById(`messages${this.channelId}`);\r\n if (scrollEl) {\r\n setTimeout(() => {\r\n scrollEl.scrollTop = scrollEl.scrollHeight;\r\n // console.log('📜 el:', scrollEl,'top:', scrollEl.scrollTop, 'set to =>', 'height:', scrollEl.scrollHeight);\r\n }, 500);\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n // new // \r\n scrollCheck() {\r\n if (!this.scrollBox) {\r\n this.scrollBox = document.querySelector(\"#messages\" + this.channelId);\r\n };\r\n // ℹ your position //\r\n let boxPos = Math.ceil(this.scrollBox.scrollTop);\r\n //console.log(\"📜 scroll pos: \" + boxPos);\r\n // if @top & more messages //\r\n if (boxPos < 1 && !this.scrollTopBlock) {\r\n if (this.loadMoreMessagesAvailable) {\r\n this.scrollTopBlock = true;\r\n this.retrieveMoreMessages();\r\n // jump down a bit to offset loading time ? \r\n this.scrollBox.scrollTop = 20;\r\n }\r\n }\r\n }\r\n\r\n _getChannelByName(intakeUser: any) {\r\n let channelName = \"PO_\" + intakeUser.chatUserKeyNavigation.channelUserId;\r\n // this.channelDisplayName = intakeUser.chatUserKeyNavigation.displayName;\r\n this._apiCallsService.getChannelByNameAndProjectId(channelName, this.teamProjectId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let channel: any = data.body[0];\r\n this.channelInfo = channel;\r\n this.channelId = this.channelInfo.channelId;\r\n // if (this.channelInfo.welcome) {\r\n // this.messages.push(this.welcomeMessage());\r\n // }\r\n this._channelService.join(this.channelId);\r\n this.getChannelInfo();\r\n } \r\n // else {\r\n // // console.log(data);\r\n // }\r\n });\r\n }\r\n\r\n _getChannel(channelId: any, withMessages: boolean = false) {\r\n if (channelId === 'composeNewMessage') {\r\n return;\r\n }\r\n // this.channelDisplayName = intakeUser.chatUserKeyNavigation.displayName;\r\n this._apiCallsService.getChannel(channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let channel: any = data.body;\r\n // console.log(\"Got channel info\", channel)\r\n this.channelId = channelId;\r\n this.channelInfo = channel;\r\n // console.log(\"CHANNEL INFO!!!!!!!!\", channel)\r\n // if (this.channelInfo.welcome) {\r\n // this.messages.push(this.welcomeMessage());\r\n // }\r\n this.getChannelInfo();\r\n if (withMessages) {\r\n this.retrieveInitialMessages(channelId);\r\n }\r\n } \r\n // else {\r\n // // console.log(data);\r\n // }\r\n });\r\n }\r\n\r\n getChannelInfo() {\r\n this.isPrivate = this.channelInfo.private;\r\n this.privateCheck = true;\r\n if (this.channelInfo.type === 'quick') {\r\n this.isQuickMeeting = true;\r\n // console.log(\"❔ is this a quick meeting? :::\", this.isQuickMeeting)\r\n }\r\n //alert(\"Chat comp \" + this.channelId);\r\n // this.retrieveInitialFiles();\r\n // this._sharedFileList();\r\n }\r\n\r\n _updateUnreadMessageCount(messageChannelId: any) {\r\n this._channelService.updateUnreadMessageCount(messageChannelId);\r\n }\r\n\r\n // _onError() {\r\n // console.error(\"User not found\");\r\n // }\r\n\r\n checkURL(message: string) {\r\n // let expression = /(?:(?:https?|ftp):\\/\\/)?([\\w_-]+(?:(?:\\.[\\w_-]+)+))([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?/gmi;\r\n let expression = /(?:(?:https?|ftp):\\/\\/|www\\.)([\\w_-]+)([\\w.,{}@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?/gmi;\r\n let regex = new RegExp(expression);\r\n if (message.match(regex)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n checkImage(message: string) {\r\n // console.log('Check Image Called');\r\n let imgExpression = /\\.(jpeg|jpg|gif|png)$/;\r\n let regex = new RegExp(imgExpression);\r\n if (message.match(regex)) {\r\n // console.log('IMAGE FOUND!');\r\n return true;\r\n } else {\r\n // console.log('IMAGE NOT FOUND!');\r\n return false;\r\n }\r\n };\r\n\r\n cleanURL(url: string) {\r\n let expression = /(http|ftp|https|):\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)?/ig;\r\n let regex = new RegExp(expression);\r\n if (url.match(regex)) {\r\n return url;\r\n } else {\r\n return 'https://' + url;\r\n }\r\n }\r\n\r\n findUsersInMessage(users: any) {\r\n // let users = this.userExtractor(message);\r\n // let usernames = this.cleanUsernames(users)\r\n // this._checkUserExists(usernames);\r\n //Verify function to make sure users exist()\r\n let message = this.newMessage.value.content;\r\n let newValue: any = message.split(\"\");\r\n for (let i = users.length - 1; i >= 0; i--) {\r\n let username = users[i].username;\r\n // cote added mat ... \r\n let aTag = `${username}`;\r\n let aTagArray = aTag.split(\"\");\r\n newValue.splice(users[i].first, users[i].length, ...aTagArray);\r\n // console.log(newValue.join(\"\"))\r\n }\r\n // console.log(users);\r\n // console.log(newValue.join(\"\"));\r\n return newValue.join(\"\");\r\n }\r\n\r\n userExtractor(message:any) {\r\n let expression = /^\\

(@[a-zA-Z]+\\.\\w+)|\\s(@[a-zA-Z]+\\.\\w+)/g;\r\n let regex = new RegExp(expression);\r\n let result = message.matchAll(regex);\r\n let userObjects = [];\r\n for (let match of result) {\r\n // console.log(match)\r\n if (match[1]) {\r\n let diff = 3;//Accounts for

\r\n userObjects.push({\r\n first: match.index + diff,\r\n last: match.index + diff + match[1].length,\r\n length: match[1].length,\r\n username: match[1],\r\n });\r\n } else if (match[2]) {\r\n userObjects.push({\r\n first: match.index,\r\n last: match.index + match[0].length,\r\n length: match[0].length,\r\n username: match[0]\r\n });\r\n }\r\n }\r\n // console.log(\"extracted users\", userObjects);\r\n return userObjects;\r\n }\r\n\r\n cleanUsernames(users:any) {\r\n let usernameList = [];\r\n users.forEach(user => {\r\n usernameList.push(user.username.replace(/\\s|@/g, ''));\r\n });\r\n // console.log(\"cleanUsernames\", usernameList)\r\n return usernameList;\r\n }\r\n\r\n _checkUserExists(users:any) {\r\n // console.log(users);\r\n let usernames = this.cleanUsernames(users)\r\n this._apiCallsService.checkUsersExistByUsername(usernames)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n let newUserNames = res.body;\r\n // console.log(\"checkUsernames\", newUserNames)\r\n let newUsers = this.compareUsersList(users, newUserNames);\r\n let newMessage = this.findUsersInMessage(newUsers);\r\n let url = this.router.url;\r\n // console.log(\"final List\", newUsers)\r\n this.sendMessage({ \"message\": newMessage, \"atUsers\": newUserNames, \"url\": url });\r\n } else {\r\n // console.log(res)\r\n this._toastService.error(\"Could not find @ Users\");\r\n }\r\n });\r\n }\r\n\r\n private compareUsersList(userObjects: any[], usernames: any[]) {\r\n return userObjects.filter(user => usernames.find(username => username.userName.toLowerCase() === user.username.replace(/\\s|@/g, '').toLowerCase()));\r\n }\r\n\r\n get mc() { return this.newMessage.controls; }\r\n\r\n _getChannelUser() {\r\n this._authService.getChannelUserInfo()\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let user: any = data.body;\r\n this.user.hash = user.hash;\r\n } else {\r\n console.error(\"error getting user image\", data)\r\n }\r\n });\r\n }\r\n\r\n // uploadChange(isUploading:boolean) {\r\n // this.fileIsUploading = isUploading;\r\n // }\r\n\r\n startAtUser() {\r\n this.clearSearch();\r\n this.checkSetSearch(true);\r\n }\r\n\r\n // 😀 for emoji button\r\n //new\r\n addStringToMessage(input:any) {\r\n this.editor.commands.insertText(input).exec();\r\n }\r\n\r\n //SEARCH MEMBERS/OWNERS OF A CHANNEL\r\n public _getUsersFromChannelBySearchQuery(searchString: string) {\r\n this._chManageService.searchForMembersAndOwnersByChannelId(this.channelId, searchString)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let list = data.body;\r\n this.userSearchList = list;\r\n } else {\r\n // console.error(JSON.stringify(data));\r\n this._toastService.error(\"Could not search Channel\");\r\n }\r\n });\r\n }\r\n\r\n addUser(i:number) {\r\n let username = this.userSearchList[i].username.toLowerCase();\r\n this.replaceTextFromSearch(username + \" \");\r\n }\r\n\r\n welcomeMessage() {\r\n return {\r\n content: this.channelInfo.welcome,\r\n when: null,\r\n welcomeMessage: true,\r\n channelUserKeyNavigation: this.channelInfo.chatUserKeyNavigation\r\n }\r\n }\r\n\r\n defaultNoMoreMessages() {\r\n let usernames = () => {\r\n let names: string = \" with \";\r\n let owners = this.getOwnersFromChannelInfo();\r\n if (owners.length === 0) {\r\n return '';\r\n }\r\n owners.forEach((user, i) => {\r\n names += user.displayName;\r\n if (i == owners.length - 2) {\r\n names += \" & \";\r\n } else if (i < owners.length - 1) {\r\n names += \", \";\r\n }\r\n })\r\n return names;\r\n };\r\n let name = (dmType: string) => {\r\n if (dmType === 'direct') {\r\n return usernames();\r\n } else if (dmType === 'app') {\r\n if (this.channelInfo.name.startsWith('PO_')) {\r\n return \" in the Intake App\";\r\n } else {\r\n return \" in the App\";\r\n }\r\n } else {\r\n return \" in \" + this.channelInfo.name;\r\n }\r\n }\r\n if (!this.channelInfo.chatUserKeyNavigation) {\r\n // this._toastService.error(\"check console\");\r\n console.error(\"channel info for default message, missing chatUserKey, channelinfo:\", this.channelInfo);\r\n }\r\n return {\r\n content: \"This is the beginning of the conversation\" + name(this.channelInfo.type) + \".\",\r\n when: null,\r\n welcomeMessage: true,\r\n channelUserKeyNavigation: this.channelInfo.chatUserKeyNavigation\r\n }\r\n }\r\n\r\n getOwnersFromChannelInfo() {\r\n let owners = [];\r\n // console.log(\"channel info\", this.channelInfo);\r\n // console.log(\"owners info\", this.channelInfo.chatRoomChatUsers);\r\n if (this.channelInfo) {\r\n this.channelInfo.chatRoomChatUsers.forEach(info => {\r\n let user = info.chatUserKeyNavigation;\r\n if (user.channelUserId !== this.user.sub) {\r\n owners.push(user);\r\n }\r\n });\r\n }\r\n // console.log(\"found owners\", owners);\r\n return owners;\r\n }\r\n\r\n handleBrokenImage(idx:number): void {\r\n // console.info('yeeeeee')\r\n this.messages[idx].channelUserKeyNavigation.hash = '1';\r\n }\r\n}\r\n","\r\n\t

\r\n\t\tLoading Messenger\r\n\t

\r\n\r\n\t

Chat Disabled

\r\n\t\r\n\t\tYou have entered a private conversation\r\n\t

\r\n\t\r\n\t\tYou have entered a public conversation\r\n\t

\r\n\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{{ message.channelUserKeyNavigation.username | defaultImageOverlay }}\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ message.channelUserKeyNavigation.displayName }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ message.when | date: \"hh:mm a\" }}\r\n\t\t\t\t\t\t\tWelcome Message\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{{ user.displayName\r\n\t\t\t\t\t\t}},\r\n\t\t\t\t\t\t &\r\n\t\t\t\t\t\r\n\t\t\t\t\t 1\"> are typing \r\n\t\t\t\t\t is typing \r\n\t\t\t\t

\r\n\t\t\t\t

3\" class=\"name-dots\">\r\n\t\t\t\t\t Many Users are typing \r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t\r\n\t\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t@{{ user.username | lowercase }} - {{ user.displayName }} -\r\n\t\t\t\t\t\t{{ user.email ? user.email : \"(no email)\" }}\r\n\t\t\t\t\t

\r\n\t\t\t\t\t 0\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tUsername Not Found\r\n\t\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tContinue Typing a Username\r\n\t\t\t\t\t

\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t \r\n\t\t
\r\n\t
\r\n\r\n\r\n
\r\n\t

You do not have permission to access this content

\r\n
\r\n\r\n\r\n","import { Component, OnDestroy } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AuthService } from \"src/app/core/auth.service\";\r\nimport { ChannelService } from \"../../../services/channel-service\";\r\n\r\n\r\n\r\n@Component({\r\n selector: \"connection-overlay\",\r\n templateUrl: \"./connection-overlay.component.html\",\r\n styleUrls: [\"./connection-overlay.component.scss\"],\r\n})\r\nexport class ConnectionOverlayComponent implements OnDestroy {\r\n private subscriptions: Subscription[] = [];\r\n public connectionStatus: any = \"connecting\";\r\n public showOverlay: boolean = false;\r\n public _isSignedIn: boolean;\r\n\r\n constructor(\r\n private _channelService: ChannelService,\r\n private _auth: AuthService\r\n ) {\r\n this._auth.isSignedIn(false).then(signedIn => {this._isSignedIn = signedIn});\r\n this.subscriptions.push(\r\n this._channelService.onHubConnectionStateChangeEvent$.subscribe(\r\n (state: any) => {\r\n // console.log(\"app component state: \" + state);\r\n this.connectionStatus = state;\r\n if (state.toLowerCase() === \"disconnected\" && this._isSignedIn) {\r\n this.showOverlay = true;\r\n // document.getElementById(\"connection-overlay\").style.display = \"flex\";\r\n } else {\r\n // document.getElementById(\"connection-overlay\").style.display = \"none\";\r\n this.showOverlay = false;\r\n }\r\n }\r\n )\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) =>\r\n subscription.unsubscribe()\r\n );\r\n }\r\n}\r\n","
\r\n

Connection lost. Attempting to reconnect

\r\n
\r\n","import { Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from \"@angular/core\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ChannelService } from \"src/app/services/channel-service\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { Contact } from \"../../interface/contact\";\r\nimport { Constants } from \"src/app/constants\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { ContactsService } from \"src/app/services/contacts.service\";\r\nimport { slideInLeft } from \"src/app/animations/global-animations\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { AuthService } from \"src/app/core/auth.service\";\r\n\r\n\r\n@Component({\r\n selector: \"contact-info\",\r\n templateUrl: \"./contact-info.component.html\",\r\n styleUrls: [\"./contact-info.component.scss\"],\r\n animations: [slideInLeft]\r\n})\r\nexport class ContactInfoComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input('contactInfo') contactInfo: Contact;\r\n @Input('userInfo') userInfo: ChannelUser;\r\n @Output(\"closeInfo\") closeInfo = new EventEmitter();\r\n @Output(\"editContactModal\") editContactModal = new EventEmitter();\r\n @Output(\"notesUpdate\") notesUpdate = new EventEmitter(); // update note of selected contact on parent ... \r\n @Output(\"formTouchedEvent\") formTouchedEvent = new EventEmitter(); // to show confirm 🚧 todo ...\r\n\r\n public isSendingRegisterLink: boolean = false;\r\n\r\n public newContactNote: FormGroup;\r\n public isAddingNote: boolean = false;\r\n public isFormTouched: boolean = false;\r\n\r\n public tenantRegistrationLink: string;\r\n public isAdmin: boolean;\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n public _channelService: ChannelService,\r\n public _toast: ToastNotificationService,\r\n public _api:ApiCallsService,\r\n private fb: FormBuilder, \r\n private _contactService: ContactsService,\r\n private _authService: AuthService,\r\n private _apiCallService: ApiCallsService\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.userInfo) {\r\n this.isAdmin = this.userInfo.roles.some(role => role.toLowerCase() === 'admin')\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(\"%c contact info \", consoleLogStyle, this.contactInfo)\r\n this.createForm();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n createForm() {\r\n this.newContactNote = this.fb.group({\r\n notes: [\"\", [Validators.required]],\r\n });\r\n if(!!this.contactInfo.notes) {\r\n this.newContactNote.setValue({\r\n notes: this.contactInfo.notes,\r\n });\r\n }\r\n this.subscriptions.push(this.newContactNote.valueChanges.subscribe(data => {\r\n console.log('Form changes', data);\r\n if(data.notes !== this.contactInfo.notes) {\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.formTouchedEvent.emit(true);\r\n // console.log('Form Touched Emiited', this.isFormTouched);\r\n }\r\n } else {\r\n this.isFormTouched = false;\r\n this.formTouchedEvent.emit(false);\r\n }\r\n }));\r\n }\r\n\r\n addNote() {\r\n // patch contact like Favorite here ...\r\n this.isAddingNote = true;\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/notes\",\r\n \"value\": this.newContactNote.value.notes\r\n };\r\n this._contactService.patchContact(this.contactInfo.contactId, patch)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n console.log(\"contact note added\")\r\n this.isAddingNote = false;\r\n this.contactInfo.notes = this.newContactNote.value.notes;\r\n this.newContactNote.setValue({\r\n notes: this.contactInfo.notes,\r\n });\r\n } else {\r\n this.isAddingNote = false;\r\n this._toast.error(\"There was an error adding note.\");\r\n }\r\n });\r\n }\r\n\r\n sendDirectMessage(user: Contact) {\r\n this.closeInfo.emit();\r\n // \r\n console.log(\"Open Direct Messages: .................\", user);\r\n this._channelService.directMessageEmitEvent();\r\n // if dm does not exsist pass there id ...\r\n if (user.dmChannelId) {\r\n console.log(\"DM convo Found!\");\r\n this._channelService.redirectDirectMessage(user.dmChannelId, user.displayName);\r\n } else {\r\n console.log(\"DM convo not found\");\r\n this._channelService.redirectDirectMessage('composeNewMessage', user.displayName, user.contactChannelUserId);\r\n }\r\n }\r\n\r\n // 🚧 \r\n sendRegisterLinkToContact() {\r\n this.isSendingRegisterLink = true;\r\n // \r\n let allTenants = [];\r\n this._api.getTenants().subscribe(res => {\r\n if(res.status === 200) {\r\n console.log(\"all tenents?\", res.body)\r\n allTenants = res.body;\r\n allTenants.filter(tenant => {\r\n if(tenant.tenantName.toLocaleLowerCase() === this.userInfo.tenant.toLocaleLowerCase()) {\r\n console.log(\"your tenant register link:\", `${Constants.apiRoot}register/${tenant.tenantCode}`)\r\n // alert(`Send this link: ${Constants.apiRoot}register/${tenant.tenantCode}, Send to ${this.contactInfo.email}`)\r\n this.tenantRegistrationLink = `${Constants.apiRoot}register/${tenant.tenantCode}`;\r\n \r\n // 🚧 send email here ... \r\n this.openEmailWithRegisterLink();\r\n }\r\n });\r\n this.isSendingRegisterLink = false;\r\n } else {\r\n console.error(\"error getting all tenants\", res)\r\n this.isSendingRegisterLink = false;\r\n this._toast.error(\"There was an error getting your tenants.\");\r\n }\r\n });\r\n }\r\n\r\n openEmailWithRegisterLink() {\r\n // 🚧 \r\n let subject = `${this.userInfo.displayName} has invited you to join VIA3`;\r\n let body = `Follow this link to join me on VIA3 - ${this.tenantRegistrationLink}`;\r\n let emailEl = document.createElement('a');\r\n emailEl.setAttribute('href', `mailto:${this.contactInfo.email}?subject=${subject}&body=${body}`);\r\n emailEl.click();\r\n this.isSendingRegisterLink = false;\r\n }\r\n\r\n editContact() {\r\n // close this emit true, open edit ... \r\n this.editContactModal.emit();\r\n }\r\n\r\n getDmChannel(user: Contact){\r\n\r\n console.log(\"Contact Info: \" + user.contactChannelUserId);\r\n this._apiCallService.getDirectChannelByTwoUsers(user.contactChannelUserId)\r\n .subscribe(res => {\r\n if(res.status === 200) {\r\n // console.log(\"contact un-favorited\")\r\n let data = res.body;\r\n user.dmChannelId = data.channelId;\r\n this.sendDirectMessage(user);\r\n console.log(\"User DM API: \"+ res.body);\r\n } else {\r\n console.error(\"There was an getting the DM channel for the contact.\");\r\n }\r\n });\r\n\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \"contact\"\r\n
\r\n
\r\n \r\n
\r\n \"contact\"\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n {{contactInfo.displayName}} \r\n

\r\n \r\n
\r\n

Email:

{{contactInfo.email}}\r\n
\r\n \r\n
\r\n

Phone:

{{(contactInfo.phone|mask: \"(000) 000-0000\") || ' -'}}\r\n
\r\n \r\n
\r\n {{contactInfo.userStatus|titlecase}}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n

First name:

{{contactInfo.firstName || ' -'}}\r\n
\r\n
\r\n
\r\n
\r\n

Last name:

{{contactInfo.lastName || ' -'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Company:

{{contactInfo.company || ' -'}}\r\n
\r\n
\r\n
\r\n
\r\n

Position:

{{contactInfo.position || ' -'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Fax number:

{{contactInfo.faxNumber || ' -'}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n

Address:

{{contactInfo.address || ' -'}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n

\r\n Notes: \r\n \r\n \r\n Add Note\r\n \r\n \r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { \r\n Component, \r\n Inject, \r\n Input, \r\n OnChanges, \r\n OnDestroy, \r\n OnInit, \r\n SimpleChanges } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport {\r\n listAnimationWrap,\r\n listAnimationItem,\r\n customExitTransition\r\n} from \"src/app/animations/global-animations\";\r\nimport { AuthService } from \"src/app/core/auth.service\";\r\n// import { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ChannelService } from \"src/app/services/channel-service\";\r\nimport { ContactsService } from \"src/app/services/contacts.service\";\r\nimport { SubscriptionPlan, SubscriptionService } from \"src/app/services/subcription.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { Contact } from \"../../interface/contact\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\n\r\n\r\n\r\n@Component({\r\n selector: \"contacts\",\r\n templateUrl: \"./contacts.component.html\",\r\n styleUrls: [\"./contacts.component.scss\"],\r\n animations: [listAnimationWrap, listAnimationItem],\r\n})\r\nexport class ContactsComponent implements OnInit, OnChanges, OnDestroy {\r\n // public contacts: any[] = []; // sorting on front-end ... \r\n // public contactsPag: any = {}; // pagination removed due to sorting issues ... \r\n\r\n // for testing ... \r\n // public hasPopulatedContacts: boolean = false; // set true if reset was clicked ... \r\n\r\n @Input(\"userInfo\") userInfo: ChannelUser;\r\n @Input('isViewer') isViewer: boolean;\r\n\r\n public isLoadingContacts: boolean = true;\r\n public contactsFiltered: Array = [];\r\n public hasNoContacts: boolean;\r\n\r\n public displayOptionModal: boolean = false;\r\n public displayEmailInviteModal: boolean = false;\r\n public displayEmailInviteWarning: boolean = false;\r\n\r\n public displayCreateContactModal: boolean = false;\r\n public displayCreateContactWarning: boolean = false;\r\n\r\n public isEditContact: boolean = false;\r\n public displayContactInfoModal: boolean = false;\r\n public displayAddNoteWarning: boolean = false;\r\n public selectedContact: Contact;\r\n \r\n public sortOptions: any[] = ['Activity', 'Favorites', 'A - Z'];\r\n public isLoadingSortOptions: boolean = true;\r\n // public isSortingContacts: boolean;\r\n\r\n public contactToRemove: any = {\r\n contactId: null,\r\n name: null,\r\n contactIdx: null,\r\n };\r\n\r\n public isLoadingSubscription: boolean;\r\n public subscriptionPlan: SubscriptionPlan;\r\n \r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n @Inject('rippleColor') public rippleColor: string,\r\n // private _apiCallsService: ApiCallsService,\r\n private _contactsService: ContactsService,\r\n private _channelService: ChannelService,\r\n private _toastService: ToastNotificationService,\r\n private _subscriptionService: SubscriptionService,\r\n private _authService: AuthService,\r\n private _apiCallService: ApiCallsService\r\n ) {\r\n this.subscriptions.push(this._channelService.onUpdateUserStatusEvent$.subscribe((channelUserStatusList: any) => {\r\n //console.log(\"?: channelUserStatusList: \", channelUserStatusList) ////CG\r\n this.contactsFiltered.forEach(contact => {\r\n //console.log(\"?: contact.contactChatUserKeyNavigation: \", contact.contactChatUserKeyNavigation); ////CG \r\n channelUserStatusList.forEach(channelUser => { \r\n if (!!contact.contactChatUserKeyNavigation && contact.contactChatUserKeyNavigation.username.toLowerCase() === channelUser.username.toLowerCase()) {\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n contact.userStatus = \"offline\";\r\n contact.userStatusIdx = 4;\r\n } else if (channelUser.presenceStatus === 1) {\r\n contact.userStatus = \"idle\"; // was 'away' ... \r\n contact.userStatusIdx = 2;\r\n } else if (channelUser.presenceStatus === 2) {\r\n contact.userStatus = \"active\";\r\n contact.userStatusIdx = 0;\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n contact.userStatus = \"offline\";\r\n contact.userStatusIdx = 4;\r\n } else if (channelUser.selectedStatus === 2) {\r\n contact.userStatus = \"dnd\";\r\n contact.userStatusIdx = 3;\r\n } else if (channelUser.selectedStatus === 3) {\r\n contact.userStatus = \"brb\";\r\n contact.userStatusIdx = 1;\r\n }\r\n }\r\n });\r\n });\r\n if(this.sortOptions[0] === 'Activity' || 'Favorites') {\r\n this.sortBy();\r\n }\r\n // console.log(\"%c this._channelService.onUpdateUserStatusEvent$.sub \", consoleLogStyle)\r\n }));\r\n // \r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"closeCreateContactModal\") {\r\n this.closeCreateContactModal();\r\n }\r\n if (data.type === \"closeContactInfoModal\") {\r\n this.closeContactInfoModal();\r\n }\r\n if (data.type === \"closeEmailInviteModal\") {\r\n this.closeEmailInviteModal();\r\n }\r\n if (data.type === \"removeContact\") {\r\n // console.log(\"%c contact to remove?\", consoleLogStyle, this.contactToRemove)\r\n this.removeContact(\r\n this.contactToRemove.contactId, \r\n this.contactToRemove.name, \r\n this.contactToRemove.contactIdx\r\n );\r\n }\r\n }));\r\n\r\n // ❌❌❌ When new direct message is created ❔❔❔ NO UN-READ MESSAGE BADGE IS SHOWN IN THIS COMPONENT // \r\n // this.subscriptions.push(this._channelService.onUpdateDirectMessageListEvent$.subscribe(() => {\r\n // this.getAllContacts();\r\n // }));\r\n }\r\n\r\n ngOnInit(): void {\r\n // console.log(\"%c contacts init \", consoleLogStyle, this.contactsFiltered)\r\n this.isLoadingContacts = true;\r\n this.isLoadingSortOptions = true;\r\n this._getSubscription();\r\n }\r\n\r\n // gets your current plan ... \r\n _getSubscription() {\r\n this.isLoadingSubscription = true;\r\n this._subscriptionService.getSubscriptionById(this._authService._userInfo.subscriptionId)\r\n .subscribe((data) => {\r\n if (data.status === 200) {\r\n this.subscriptionPlan = data.body;\r\n // console.info(\"%c user subscription plan > \", consoleLogStyle, this.subscriptionPlan)\r\n this.isLoadingSubscription = false;\r\n // console.info(\"%c user info from auth ? \", this.consoleStyle, this._authService._userInfo)\r\n } else {\r\n console.error(\"error getting subcriptions\", data)\r\n this.isLoadingSubscription = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.userInfo) {\r\n if (!!this.userInfo) {\r\n let sortOrder = localStorage.getItem('contactsOrder');\r\n // console.log(\"%c user info input changes CONTACTS \", consoleLogStyle, sortOrder);\r\n if(!!sortOrder && sortOrder !== '') {\r\n this.sortOptions = this.sortOptions.sort((a,b) => {\r\n return a === sortOrder ? -1 : b === sortOrder ? 1 : 0; // this sets this.sortOrder[0] to Local Storage order ... \r\n });\r\n this.isLoadingSortOptions = false;\r\n this.getAllContacts();\r\n // console.log('%c sort order ', consoleLogStyle, this.sortOptions);\r\n } else {\r\n this.isLoadingSortOptions = false;\r\n this.getAllContacts();\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n // get all contacts \r\n getAllContacts() {\r\n // this.isLoadingContacts = true;\r\n // this.contacts = [];\r\n // this.contactsFiltered = [];\r\n // console.log(\"User Role: \" + this._authService._user.profile.role);\r\n // console.log(\"%c api call with userinfo CONTACTS \", consoleLogStyle, this.userInfo);\r\n if (!this.isViewer) {\r\n this._contactsService.getAllContactsNoPage(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n //console.log(\"%c contacts \", consoleLogStyle, data.body) ////CG\r\n this.contactsFiltered = data.body;\r\n // this.contactsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n if(!!this.contactsFiltered && this.contactsFiltered.length > 0) {\r\n this.sortBy();\r\n } else {\r\n this.isLoadingContacts = false;\r\n this.hasNoContacts = true;\r\n }\r\n } else {\r\n this._toastService.error(\"There was an error getting your contacts.\");\r\n this.isLoadingContacts = false;\r\n }\r\n });\r\n } else {\r\n this._contactsService.getAllContactsViewer(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n // console.log(\"%c contacts \", consoleLogStyle, data.body)\r\n this.contactsFiltered = data.body;\r\n // this.contactsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n if(!!this.contactsFiltered && this.contactsFiltered.length > 0) {\r\n this.sortBy();\r\n } else {\r\n this.isLoadingContacts = false;\r\n }\r\n } else {\r\n this._toastService.error(\"There was an error getting your contacts.\");\r\n this.isLoadingContacts = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n setSortBy() {\r\n this.sortOptions.push(this.sortOptions.shift());\r\n localStorage.setItem('contactsOrder', this.sortOptions[0]);\r\n this.sortBy();\r\n }\r\n\r\n sortBy() {\r\n // this.isSortingContacts = true;\r\n \r\n // status only ... \r\n if(this.sortOptions[0] === 'Activity') { \r\n this.contactsFiltered = this.contactsFiltered.sort((a,b) => a.userStatusIdx - b.userStatusIdx);\r\n // ... \r\n if(this.contactsFiltered.length > 0) {\r\n this.isLoadingContacts = false;\r\n }\r\n }\r\n \r\n // favs first then by status ... \r\n if(this.sortOptions[0] === 'Favorites') { \r\n let favs = [];\r\n let notFavs = [];\r\n this.contactsFiltered.forEach(contact => {\r\n if(contact.isFavorite) {\r\n favs.push(contact);\r\n } else {\r\n notFavs.push(contact);\r\n }\r\n });\r\n let favsSorted = favs.sort((a,b) => a.userStatusIdx - b.userStatusIdx);\r\n let notFavsSorted = notFavs.sort((a,b) => a.userStatusIdx - b.userStatusIdx);\r\n let result = favsSorted.concat(notFavsSorted);\r\n this.contactsFiltered = result;\r\n // ... \r\n if(this.contactsFiltered.length > 0) {\r\n this.isLoadingContacts = false;\r\n }\r\n }\r\n \r\n // just a - z ... \r\n if(this.sortOptions[0] === 'A - Z') { \r\n this.contactsFiltered = this.contactsFiltered.sort((a,b) => {\r\n if(a.displayName.toUpperCase() < b.displayName.toUpperCase()) {\r\n return -1;\r\n }\r\n if(a.displayName.toUpperCase() > b.displayName.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n // ... \r\n if(this.contactsFiltered.length > 0) {\r\n this.isLoadingContacts = false;\r\n }\r\n }\r\n // 💡 \r\n // w/o the length check the 'you have no contacts' message will flash a sec, after navigating home from a channel ... \r\n // i think this happens during sorting if the array is 0 length for < a sec and flashes wrong message ... \r\n // i think this fix works because if it checks the length while it is still sorting it will wait til sort is done? ... \r\n \r\n // moved to end of each if(sort option) ... \r\n // if(this.contactsFiltered.length > 0) {\r\n // this.isLoadingContacts = false;\r\n // }\r\n }\r\n\r\n // sync contacts from tennant \r\n populateContacts() {\r\n // this.isPopulatedContacts = true;\r\n this.contactsFiltered = [];\r\n this.isLoadingContacts = true;\r\n this._contactsService.populateContactsFromTennant(this.userInfo.channelUserId)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"%c contact sync success \", consoleLogStyle)\r\n this.getAllContacts();\r\n } else {\r\n this._toastService.error(\"There was an error syncing your contacts.\")\r\n }\r\n })\r\n }\r\n\r\n sendDirectMessage( user: Contact) {\r\n\r\n // \r\n // console.log(\"Open Direct Messages: \", user);\r\n this._channelService.directMessageEmitEvent();\r\n // if dm does not exsist pass there id ...\r\n //console.log(\"User DM: \"+ user.dmChannelId);\r\n\r\n if (user.dmChannelId) {\r\n this._channelService.redirectDirectMessage(user.dmChannelId, user.displayName);\r\n } else {\r\n this._channelService.redirectDirectMessage('composeNewMessage', user.displayName, user.contactChannelUserId);\r\n }\r\n }\r\n \r\n /*\r\n sendDirectMessage(e: Event, user: Contact) {\r\n e.stopPropagation();\r\n // \r\n this._channelService.directMessageEmitEvent();\r\n // if dm does not exsist pass there id ...\r\n if (user.dmChannelId) {\r\n this._channelService.redirectDirectMessage(user.dmChannelId, user.displayName);\r\n } else {\r\n this._channelService.redirectDirectMessage('composeNewMessage', user.displayName, user.contactChannelUserId);\r\n }\r\n }\r\n */\r\n\r\n // favs\r\n favoriteContact(contactId: string, contactIdx: number, e: Event) {\r\n e.stopPropagation();\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": true\r\n };\r\n this._contactsService.patchContact(contactId, patch)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"contact favorited\")\r\n this.contactsFiltered[contactIdx].isFavorite = true;\r\n this.sortBy();\r\n } else {\r\n this._toastService.error(\"There was an error favoriting this contact.\");\r\n }\r\n });\r\n }\r\n\r\n unFavoriteContact(contactId:string, contactIdx: number, e: Event) {\r\n e.stopPropagation();\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/isFavorite\",\r\n \"value\": false\r\n };\r\n this._contactsService.patchContact(contactId, patch)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"contact un-favorited\")\r\n this.contactsFiltered[contactIdx].isFavorite = false;\r\n this.sortBy();\r\n } else {\r\n this._toastService.error(\"There was an error un-favoriting this contact.\");\r\n }\r\n });\r\n }\r\n\r\n public removeContactPrompt(contactId: string, name: string, contactIdx: number) {\r\n this.contactToRemove = {\r\n \"contactId\": contactId,\r\n \"name\": name,\r\n \"contactIdx\": contactIdx\r\n };\r\n this._toastService.continue(`Are you sure you want to remove ${name}?`, \"removeContact\");\r\n }\r\n\r\n private removeContact(contactId: string, name: string, contactIdx: number) {\r\n // this.isRemovingContact = true;\r\n let element = document.getElementsByClassName('contact-container')[contactIdx];\r\n let element2 = document.getElementsByClassName('contact-container')[contactIdx + 1] || null;\r\n element.style.opacity = '0.5';\r\n this._contactsService.deleteContact(contactId)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n // console.log(\"contact removed\", contactId)\r\n // this._toastService.success(`${name} has been removed from your contacts.`);\r\n let updatedContacts = this.contactsFiltered.filter(contact => contact.contactId !== contactId);\r\n customExitTransition(element, element2);\r\n setTimeout(() => {\r\n this.contactsFiltered = updatedContacts;\r\n // this.isRemovingContact = false;\r\n this.contactToRemove = {\r\n contactId: null,\r\n name: null,\r\n contactIdx: null,\r\n };\r\n }, 262);\r\n } else {\r\n this._toastService.error(`There was an error deleting ${name}.`);\r\n element.style.opacity = '1';\r\n // this.isRemovingContact = false;\r\n this.contactToRemove = {\r\n contactId: null,\r\n name: null,\r\n contactIdx: null,\r\n };\r\n }\r\n });\r\n }\r\n\r\n // to close all modals | add switch if needed to close milti ... \r\n clickOffModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n switch (value) {\r\n case 'create-contact-modal': {\r\n if(this.displayCreateContactWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeCreateContactModal\");\r\n } else {\r\n this.closeCreateContactModal();\r\n }\r\n break;\r\n }\r\n case 'contact-info-modal': {\r\n if(this.displayAddNoteWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeContactInfoModal\");\r\n } else {\r\n this.closeContactInfoModal();\r\n }\r\n break;\r\n }\r\n case 'email-invite-modal': {\r\n // this.closeEmailInviteModal();\r\n this.closeEmailInviteModalConfirm();\r\n break;\r\n }\r\n default: return;\r\n }\r\n }\r\n\r\n // contact info modal\r\n showContactInfoModal(idx: number) {\r\n this.selectedContact = this.contactsFiltered[idx];\r\n this.displayContactInfoModal = true;\r\n }\r\n closeContactInfoModal() {\r\n this.displayContactInfoModal = false;\r\n this.selectedContact = null;\r\n }\r\n closeContactInfoModalConfirm() {\r\n if(this.displayAddNoteWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeContactInfoModal\");\r\n } else {\r\n this.closeContactInfoModal();\r\n }\r\n }\r\n\r\n // 🚧 show edit contact from contact info ...\r\n editContactFromInfo() {\r\n this.displayContactInfoModal = false;\r\n this.isEditContact = true;\r\n this.displayCreateContactModal = true;\r\n }\r\n\r\n // create contact modal\r\n showCreateContactModal(isEdit?: boolean, idx?: number) {\r\n this.closeOptionModal();\r\n if(isEdit) {\r\n this.isEditContact = true;\r\n this.selectedContact = this.contactsFiltered[idx];\r\n this.displayCreateContactModal = true;\r\n } else {\r\n this.displayCreateContactModal = true;\r\n }\r\n }\r\n // 💡 this also updates the UI w/o calling api again ... \r\n closeCreateContactModal(newContactObj?:Contact) {\r\n // console.log(\"1 new contact obj created | updated\", newContactObj)\r\n this.displayCreateContactModal = false;\r\n this.displayCreateContactWarning = false;\r\n if(newContactObj) {\r\n newContactObj.displayName = `${newContactObj.firstName} ${newContactObj.lastName}`;\r\n if(this.isEditContact) {\r\n this.isEditContact = false;\r\n this._toastService.success(`${newContactObj.displayName} has been updated.`);\r\n // console.log(\"2 selected Contact from list\", this.contactsFiltered[this.contactsFiltered.indexOf(this.selectedContact)])\r\n // console.log(\"3 selected Contact from list index\", this.contactsFiltered.indexOf(this.selectedContact))\r\n this.contactsFiltered[this.contactsFiltered.indexOf(this.selectedContact)] = newContactObj;\r\n // console.log(\"4 Updated selected Contact from list\", this.contactsFiltered[this.contactsFiltered.indexOf(this.selectedContact)])\r\n this.selectedContact = null;\r\n this.sortBy();\r\n } else {\r\n this._toastService.success(`${newContactObj.displayName} has been added to your Contacts.`);\r\n this.contactsFiltered.push(newContactObj);\r\n this.sortBy();\r\n }\r\n } else {\r\n if(this.isEditContact) {\r\n this.isEditContact = false;\r\n this.selectedContact = null;\r\n }\r\n }\r\n }\r\n closeCreateContactModalConfirm() {\r\n if(this.displayCreateContactWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeCreateContactModal\");\r\n } else {\r\n this.closeCreateContactModal();\r\n }\r\n }\r\n\r\n addNoteTouched(isFormTouched: boolean) {\r\n if(isFormTouched) {\r\n this.displayAddNoteWarning = true;\r\n } else {\r\n this.displayAddNoteWarning = false;\r\n }\r\n }\r\n\r\n prevDefStopProp(e: Event) {\r\n // console.log('oi')\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n stopProp(e: Event) {\r\n e.stopPropagation();\r\n }\r\n\r\n // contact options dropdown ... \r\n showContactOptionsDropdown(i: number ,e?: Event) {\r\n e.stopPropagation();\r\n const options = document.getElementById(`contact-options-dropdown-${i}`);\r\n options.classList.add('active');\r\n \r\n // also hide scrollbar ... \r\n let scrollBox = document.getElementById('contactsScrollbox');\r\n scrollBox.classList.add('hidden');\r\n }\r\n\r\n hideContactOptionsDropdown(i: number ,e?: Event) {\r\n const options = document.getElementById(`contact-options-dropdown-${i}`);\r\n \r\n if (options == null){\r\n console.error(`Error getting contact-options-dropdown-${i}`);\r\n return;\r\n }\r\n \r\n options.classList.remove('active');\r\n \r\n // also resume scrolling ... \r\n let scrollBox = document.getElementById('contactsScrollbox');\r\n scrollBox.classList.remove('hidden');\r\n }\r\n\r\n handleBrokenImage(contactIdx:number ) {\r\n this.contactsFiltered[contactIdx].hash = '1';\r\n }\r\n\r\n showOptionModal() {\r\n this.displayOptionModal = true;\r\n }\r\n\r\n closeOptionModal() {\r\n this.displayOptionModal = false;\r\n }\r\n\r\n showEmailInviteModal() {\r\n this.closeOptionModal();\r\n this.displayEmailInviteModal = true;\r\n }\r\n\r\n closeEmailInviteModal() {\r\n this.displayEmailInviteWarning = false;\r\n this.displayEmailInviteModal = false;\r\n }\r\n\r\n closeEmailInviteModalConfirm() {\r\n if (this.displayEmailInviteWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeEmailInviteModal\");\r\n } else {\r\n this.closeEmailInviteModal();\r\n }\r\n }\r\n\r\n getDmChannel(e: Event, user: Contact){\r\n e.stopPropagation();\r\n\r\n //console.log(\"Contact Info: \" + user.contactChannelUserId);\r\n //this._apiCallService.getDirectChannelByTwoUsers(this._authService._userInfo.sub)\r\n this._apiCallService.getDirectChannelByTwoUsers(user.contactChannelUserId)\r\n .subscribe(res => {\r\n if(res.status === 200) {\r\n // console.log(\"contact un-favorited\")\r\n let data = res.body;\r\n user.dmChannelId = data.channelId;\r\n this.sendDirectMessage(user);\r\n //console.log(\"User DM API: \"+ JSON.stringify(res.body));\r\n } else {\r\n this._toastService.error(\"There was an getting the DM channel for the contact.\");\r\n }\r\n });\r\n\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// 💡 PAGINATION REMOVED DUE TO FRONT-END SORTING ISSUES ... \r\n// SET STATUS REMOVED ... ONLY RE-SET FROM SIG-R ...\r\n\r\n // setContactStatus() {\r\n // let contactList: any[] = [];\r\n // this.contacts.forEach(contact => {\r\n // let contactStatus: any = {\r\n // ...contact,\r\n // \"userStatus\": \"none\",\r\n // \"userStatusIdx\": 5\r\n // };\r\n // if (contact.contactChatUserKeyNavigation.selectedStatus === 0) {\r\n // if (contact.contactChatUserKeyNavigation.presenceStatus === 0) {\r\n // contactStatus.userStatus = \"offline\";\r\n // contactStatus.userStatusIdx = 4;\r\n // } else if (contact.contactChatUserKeyNavigation.presenceStatus === 1) {\r\n // contactStatus.userStatus = \"idle\"; // was 'away' ... \r\n // contactStatus.userStatusIdx = 2;\r\n // } else if (contact.contactChatUserKeyNavigation.presenceStatus === 2) {\r\n // contactStatus.userStatus = \"active\";\r\n // contactStatus.userStatusIdx = 0;\r\n // }\r\n // } else if (contact.contactChatUserKeyNavigation.selectedStatus === 1) {\r\n // contactStatus.userStatus = \"offline\";\r\n // contactStatus.userStatusIdx = 4;\r\n // } else if (contact.contactChatUserKeyNavigation.selectedStatus === 2) {\r\n // contactStatus.userStatus = \"dnd\";\r\n // contactStatus.userStatusIdx = 3;\r\n // } else if (contact.contactChatUserKeyNavigation.selectedStatus === 3) {\r\n // contactStatus.userStatus = \"brb\";\r\n // contactStatus.userStatusIdx = 1;\r\n // }\r\n // contactList.push(contactStatus);\r\n // });\r\n // this.contactsFiltered = contactList;\r\n // this.sortBy();\r\n // // this.contactsFiltered.sort((a,b) => a.userStatusIdx - b.userStatusIdx);\r\n // // this.isLoadingContacts = false;\r\n // console.log(\"%c contacts filtered \", consoleLogStyle, this.contactsFiltered)\r\n // }\r\n\r\n // _getMoreContacts(link:any) { // returns 24 results ... 2 page len avg. [is 15 for testing...]\r\n // this.isLoadingContacts = true;\r\n // this._apiCallsService.getGenericForPagination(link)\r\n // .subscribe(data => {\r\n // if(data.status === 200) {\r\n // this.contactsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // // console.log(\"%c MORE contacts \", consoleLogStyle, this.contacts);\r\n // // console.log(\"%c contacts pagination ? \", consoleLogStyle, this.contactsPag);\r\n // this.contactsFiltered = this.contactsFiltered.concat(data.body);\r\n // this.sortBy();\r\n // // this.setContactPaginationStatus(data.body); // ❌ ... done on backend ... \r\n // } else {\r\n // console.error(\"error getting your contacts ...\")\r\n // this._toastService.error(\"There was an error getting your contacts.\");\r\n // this.isLoadingContacts = false;\r\n // }\r\n // });\r\n // }\r\n\r\n // setContactPaginationStatus(moreContacts:any) {\r\n // let contactList: any[] = [];\r\n // moreContacts.forEach(contact => {\r\n // let contactStatus: any = {\r\n // ...contact,\r\n // \"userStatus\": \"none\",\r\n // \"userStatusIdx\": 5\r\n // };\r\n // if (contact.contactChatUserKeyNavigation.selectedStatus === 0) {\r\n // if (contact.contactChatUserKeyNavigation.presenceStatus === 0) {\r\n // contactStatus.userStatus = \"offline\";\r\n // contactStatus.userStatusIdx = 4;\r\n // } else if (contact.contactChatUserKeyNavigation.presenceStatus === 1) {\r\n // contactStatus.userStatus = \"idle\"; // was 'away' ... \r\n // contactStatus.userStatusIdx = 2;\r\n // } else if (contact.contactChatUserKeyNavigation.presenceStatus === 2) {\r\n // contactStatus.userStatus = \"active\";\r\n // contactStatus.userStatusIdx = 0;\r\n // }\r\n // } else if (contact.contactChatUserKeyNavigation.selectedStatus === 1) {\r\n // contactStatus.userStatus = \"offline\";\r\n // contactStatus.userStatusIdx = 4;\r\n // } else if (contact.contactChatUserKeyNavigation.selectedStatus === 2) {\r\n // contactStatus.userStatus = \"dnd\";\r\n // contactStatus.userStatusIdx = 3;\r\n // } else if (contact.contactChatUserKeyNavigation.selectedStatus === 3) {\r\n // contactStatus.userStatus = \"brb\";\r\n // contactStatus.userStatusIdx = 1;\r\n // }\r\n // contactList.push(contactStatus);\r\n // });\r\n // this.contactsFiltered = this.contactsFiltered.concat(contactList);\r\n // this.sortBy();\r\n // // this.contactsFiltered.sort((a,b) => a.userStatusIdx - b.userStatusIdx);\r\n // // this.isLoadingContacts = false;\r\n // console.log(\"%c contacts filtered pagination\", consoleLogStyle, this.contactsFiltered)\r\n // }\r\n\r\n\r\n // 💡 infinite scrolling w/ Intersection Observer api ... [(@listAnimationItemLong.done)=\"last ? runPaginationObserver() : ''\"] \r\n // 🌐 https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API \r\n // paginationObserver() {\r\n // let lastEl = document.getElementById('LastContact'); // grab last El in list [after animation done & is in DOM] \r\n // console.log(\"%c List anime done: run intersect observer 🎯 LAST El: \", consoleLogStyle, lastEl)\r\n // if(!!lastEl) {\r\n // let observer = new IntersectionObserver(entries => {\r\n // entries.forEach(entry => { // can observe multiple El's but will always be an Array of [entries] \r\n // console.log(\"%c is 🎯 El intersecting? \", consoleLogStyle, entry.isIntersecting)\r\n \r\n // // || entry.intersectionRatio > 0 - also works\r\n // if (entry.isIntersecting && entry.intersectionRatio >= 0) { // bottom of view intersecting W/ the top of El \r\n // console.log('%c 🎯 El is IN view run get next page! ', consoleLogStyle);\r\n \r\n // this._getMoreContacts(this.contactsPag.nextPageLink);\r\n \r\n // observer.unobserve(entry.target); // stop tracking this El, will grab next LastEl \r\n // } else {\r\n // console.log('%c 🎯 El OUT of view. ',consoleLogStyle);\r\n // }\r\n // });\r\n // });\r\n // observer.observe(lastEl); // track the last El in list \r\n // } else {\r\n // console.info(\"no last EL?\", lastEl);\r\n // }\r\n // }","
\r\n\t\r\n\t\tSort by:  {{sortOptions[0] ?? ''}}\r\n\t\r\n\t\r\n\t
\r\n\t\t

My Contacts

\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t
\r\n\t\r\n\t\r\n\t\tAdd Associate\r\n\t\r\n\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\tAdd Personal Contact\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tInvite to Join VIA3\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t

User limit reached

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tEdit contact\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tRemove contact\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ contact.firstName | defaultImageOverlay: contact.lastName }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ contact.firstName | defaultImageOverlay: contact.lastName }}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{{ contact.displayName ?? \"error in name...\" }}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\t\tcontact.isCustom\r\n\t\t\t\t\t\t\t\t\t? \"personal contact\"\r\n\t\t\t\t\t\t\t\t\t: contact.company.toUpperCase() + \" member\"\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\t\r\n\t\t\t

You do not have any contacts.

\r\n\t\t\r\n\t\r\n\t\r\n\t
\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { Validators, FormBuilder, FormGroup, FormControl } from \"@angular/forms\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ModalService } from \"src/app/services/modal.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { Project } from \"../../interface/project\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\n\r\n\r\n\r\n@Component({\r\n selector: \"create-channel\",\r\n templateUrl: \"./create-channel.component.html\",\r\n styleUrls: [\"./create-channel.component.scss\"],\r\n})\r\nexport class CreateChannelComponent implements OnInit, OnDestroy {\r\n\r\n @Input(\"userInfo\") userInfo: ChannelUser;\r\n\r\n // @Output('formTouchedEvent') formTouchedEvent = new EventEmitter();\r\n // @Output('onCompleteEvent') onCompleteEvent = new EventEmitter();\r\n\r\n\r\n public newChannel: FormGroup;\r\n public isFormTouched: boolean = false;\r\n\r\n public isLoadingProjects: boolean;\r\n public projects: Project[] = [];\r\n public hasNoProjects: boolean;\r\n\r\n public isCreatingChannel: boolean = false;\r\n\r\n public isDropdownOpen: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n // new create project intergration ...\r\n public newProject: FormGroup;\r\n public showCreateProject: boolean = false;\r\n // public isCreatingProject: boolean = false;\r\n\r\n\r\n constructor(\r\n private router: Router,\r\n private fb: FormBuilder, \r\n private _apiCallsService: ApiCallsService, \r\n private _toastService: ToastNotificationService,\r\n private _modalService: ModalService,\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isLoadingProjects = true;\r\n this.createForm();\r\n this.getProjectsByTenant();\r\n // console.log(\"%c create chan modal? \", consoleLogStyle, this.userInfo)\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n getProjectsByTenant() {\r\n this._apiCallsService.getAllProjects(this.userInfo.tenant)\r\n .subscribe(res => {\r\n if(res.status === 200) {\r\n this.projects = res.body;\r\n // this.projects = []; // testing no projects ... \r\n if(this.projects.length === 0) {\r\n this.isLoadingProjects = false;\r\n this.hasNoProjects = true;\r\n this.displayCreateProject();\r\n } else {\r\n this.isLoadingProjects = false;\r\n }\r\n // console.log(\"projects> ? \", this.projects)\r\n } else {\r\n console.error(\"error getting projects\")\r\n this.isLoadingProjects = false;\r\n }\r\n });\r\n }\r\n\r\n createForm() {\r\n this.newChannel = this.fb.group({\r\n channelProject: [\"\", [Validators.required]],\r\n channelName: [\"\", [Validators.required, Validators.minLength(2)]], // 200 max set on input.. \r\n channelTopic: [\"\", []], // 50 max set on input.. \r\n channelWelcomeMessage: [\"\", []], // 300 max set on input.. \r\n });\r\n this.subscriptions.push(this.newChannel.valueChanges.subscribe(data => {\r\n // console.log('Form changes', data);\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n // this.formTouchedEvent.emit();\r\n this._modalService.modalFormTouchedSubject.next();\r\n // console.log('Form Touched Emiited', this.isFormTouched);\r\n }\r\n }));\r\n }\r\n\r\n get newChannelControls() {\r\n return this.newChannel.controls;\r\n }\r\n\r\n // post channel \r\n createChannel(newProjectId?: string, newProject?: Project) {\r\n this.isCreatingChannel = true;\r\n let channel = {\r\n \"teamProjectId\": newProjectId ? newProjectId : this.newChannel.value.channelProject,\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": this.newChannel.value.channelName,\r\n \"type\": \"legacy\",\r\n \"videoType\": \"jitsi\",\r\n \"topic\": this.newChannel.value.channelTopic,\r\n \"welcome\": this.newChannel.value.channelWelcomeMessage,\r\n \"deleteRule\": 0,\r\n \"deleteInterval\": 0,\r\n \"scope\": \"Tenant\",\r\n \"private\": true\r\n };\r\n this._apiCallsService.postChannel(channel)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"%c channel created\", consoleLogStyle, res.body);\r\n let newChannelMade = res.body;\r\n this.isCreatingChannel = false;\r\n // this.onCompleteEvent.emit();\r\n this._modalService.modalFormCompleteSubject.next();\r\n // if staying on this page can push new channel to project then push to front \r\n // this.onCompleteEvent.emit(newChannelMade); // pushes to project[] ... \r\n this.router.navigate(['/channel', newChannelMade.channelId]);\r\n } else {\r\n // console.log(\"error creating channel\")\r\n this.isCreatingChannel = false;\r\n this._toastService.error(\"There was an error creating new channel.\");\r\n }\r\n });\r\n }\r\n\r\n // post Shared Folder \"Channel\"\r\n createSharedFolderChannel(newProjectId?: string, newProject?: Project) {\r\n this.isCreatingChannel = true;\r\n let channel = {\r\n \"teamProjectId\": newProjectId ? newProjectId : this.newChannel.value.channelProject,\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": this.newChannel.value.channelName,\r\n \"type\": \"folder\",\r\n \"videoType\": \"jitsi\",\r\n \"topic\": this.newChannel.value.channelTopic,\r\n \"welcome\": this.newChannel.value.channelWelcomeMessage,\r\n \"deleteRule\": 0,\r\n \"deleteInterval\": 0,\r\n \"scope\": \"Tenant\",\r\n \"private\": true\r\n };\r\n this._apiCallsService.postChannel(channel)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"%c channel created\", consoleLogStyle, res.body);\r\n let newChannelMade = res.body;\r\n this.isCreatingChannel = false;\r\n // this.onCompleteEvent.emit();\r\n this._modalService.modalFormCompleteSubject.next();\r\n // if staying on this page can push new channel to project then push to front \r\n // this.onCompleteEvent.emit(newChannelMade); // pushes to project[] ... \r\n // this.router.navigate(['/channel', newChannelMade.channelId]);\r\n } else {\r\n // console.log(\"error creating channel\")\r\n this.isCreatingChannel = false;\r\n this._toastService.error(\"There was an error creating new channel.\");\r\n }\r\n });\r\n }\r\n\r\n prevDef(e: Event) {\r\n // console.log('oi')\r\n e.preventDefault();\r\n }\r\n stopProp(e: Event) {\r\n e.stopPropagation();\r\n }\r\n\r\n // 🚧 ... so can use enter to pick selection from dropdown without triggering the enter submit ... \r\n public handleDropdownEnterSubmitLock(isOpen:boolean, dropdownId: string) {\r\n // console.log(isOpen)\r\n if(isOpen) {\r\n this.isDropdownOpen = isOpen;\r\n } else {\r\n let el = document.getElementById(dropdownId);\r\n if(!!el) {\r\n el.blur();\r\n }\r\n this.isDropdownOpen = isOpen;\r\n }\r\n }\r\n\r\n // new create project ...\r\n displayCreateProject() {\r\n if(!this.showCreateProject) {\r\n this.newChannel.removeControl('channelProject');\r\n this.newProject = this.fb.group({\r\n projectName: [\"\", [Validators.required, Validators.minLength(2)]], // 200max set on input...\r\n });\r\n this.subscriptions.push(this.newProject.valueChanges.subscribe(data => {\r\n // console.log('Form changes', data);\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n // this.formTouchedEvent.emit();\r\n this._modalService.modalFormTouchedSubject.next();\r\n // console.log('Form Touched Emiited', this.isFormTouched);\r\n }\r\n }));\r\n this.showCreateProject = true;\r\n } else {\r\n // this.newProject.reset();\r\n this.newChannel.addControl('channelProject', new FormControl('', Validators.required))\r\n this.showCreateProject = false;\r\n }\r\n }\r\n\r\n get newProjectControls() {\r\n return this.newProject.controls;\r\n }\r\n\r\n createProject() {\r\n this.isCreatingChannel = true;\r\n let newProj = {\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": this.newProject.value.projectName,\r\n };\r\n this._apiCallsService.postProject(newProj)\r\n .subscribe(res => {\r\n // \r\n if (res.status === 201) {\r\n console.log(\"%c project created\", consoleLogStyle, res.body);\r\n let newChannelMade: Project = res.body;\r\n this.createChannel(newChannelMade.teamProjectId, newChannelMade);\r\n } else {\r\n // console.log(\"error creating project\")\r\n this.isCreatingChannel = false;\r\n this._toastService.error(\"There was an error creating new project.\");\r\n }\r\n });\r\n }\r\n\r\n createChannelStart() {\r\n if(this.showCreateProject) {\r\n this.createProject();\r\n } else {\r\n this.createChannel();\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n

\r\n Create New Channel\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n Name is required.\r\n
\r\n
\r\n Name must be at least 2 characters.\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n loading projects ...\r\n \r\n \r\n you have not created any projects.\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{project.name}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Project is required.\r\n
\r\n \r\n \r\n \r\n Create new project\r\n \r\n \r\n \r\n\r\n \r\n \r\n Name is required.\r\n \r\n \r\n Name must be at least 2 characters.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Create Channel\r\n \r\n \r\n  Creating...\r\n \r\n \r\n
\r\n \r\n\r\n","import { Component, EventEmitter, Inject, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ContactsService } from \"src/app/services/contacts.service\";\r\n// import { FileStorageService } from \"src/app/services/file-storage.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { Contact } from \"../../interface/contact\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\n\r\n\r\n\r\n@Component({\r\n selector: \"create-contact\",\r\n templateUrl: \"./create-contact.component.html\",\r\n styleUrls: [\"./create-contact.component.scss\"],\r\n})\r\nexport class CreateContactComponent implements OnInit, OnDestroy {\r\n\r\n @Input(\"isEditContact\") isEditContact: boolean;\r\n @Input(\"contactToEdit\") contactToEdit: Contact;\r\n\r\n @Input(\"userInfo\") userInfo: ChannelUser;\r\n \r\n @Output(\"formTouchedEvent\") formTouchedEvent = new EventEmitter();\r\n @Output(\"onCompleteEvent\") onCompleteEvent = new EventEmitter();\r\n\r\n public contact: Contact;\r\n\r\n public newContact: FormGroup;\r\n public isFormTouched: boolean = false;\r\n public isCreatingContact: boolean = false;\r\n\r\n public showEmailConflictError: boolean = false;\r\n\r\n public isUpdatingContact: boolean = false;\r\n\r\n public isImageUploading: boolean = false;\r\n public isImageDefault: boolean; // to show/hide trash ... \r\n public imageToPreview: File = null;\r\n public imageToSubmit: File = null;\r\n public newContactId: string = null;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private fb: FormBuilder, \r\n private _contactService: ContactsService,\r\n private _toastService: ToastNotificationService,\r\n // private _fileStorageService: FileStorageService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.createForm();\r\n if(this.isEditContact) {\r\n let target = document.getElementById('contact-image');\r\n target.src = `https://profile-images.azureedge.us/${this.contactToEdit.hash}`;\r\n if(this.contactToEdit.hash === \"1\") {\r\n this.isImageDefault = true;\r\n } else{\r\n this.isImageDefault = false;\r\n }\r\n } else {\r\n let target = document.getElementById('contact-image');\r\n target.src = 'https://profile-images.azureedge.us/1';\r\n this.isImageDefault = true;\r\n }\r\n // \r\n document.addEventListener('dragover', (e) => e.preventDefault());\r\n document.addEventListener('drop', (e) => e.preventDefault());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n // \r\n document.removeEventListener('dragover', (e) => e.preventDefault());\r\n document.removeEventListener('drop', (e) => e.preventDefault());\r\n }\r\n\r\n createForm() {\r\n this.newContact = this.fb.group({\r\n firstName: [\"\", [Validators.required]], // 50 max set on input..\r\n lastName: [\"\", [Validators.required]], // 50 max set on input..\r\n email: [\"\", [Validators.required, Validators.pattern(\"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,4}$\")]], // 50 max set on input..\r\n phone: [\"\", [Validators.pattern(\"^(\\\\+\\\\d{1,3}[- ]?)?\\\\d{10}$\")]],\r\n company: [\"\", []],// 250 max set on input..\r\n position: [\"\", []],// 250 max set on input..\r\n address: [\"\", []],// 250 max set on input..\r\n notes: [\"\", []],//\r\n });\r\n // 🚧 if isEdit patch this.newContact val here with this.contactInfo ... \r\n if(this.isEditContact) {\r\n console.log(\"%c contact to edit? \", consoleLogStyle, this.contactToEdit)\r\n this.newContact.setValue({\r\n firstName: this.contactToEdit.firstName,\r\n lastName: this.contactToEdit.lastName,\r\n email: this.contactToEdit.email,\r\n phone: this.contactToEdit.phone||\"\",\r\n company: this.contactToEdit.company||\"\",\r\n position: this.contactToEdit.position||\"\",\r\n address: this.contactToEdit.address||\"\",\r\n notes: this.contactToEdit.notes||\"\",\r\n });\r\n }\r\n this.subscriptions.push(this.newContact.valueChanges.subscribe(data => {\r\n // console.log('Form changes', data);\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.formTouchedEvent.emit();\r\n // console.log('Form Touched Emiited', this.isFormTouched);\r\n }\r\n }));\r\n }\r\n\r\n get newContactControls() {\r\n return this.newContact.controls;\r\n }\r\n\r\n createContact() {\r\n this.isCreatingContact = true;\r\n console.log(\"creating contact\")\r\n this.contact = {\r\n \"channelUserId\": this.userInfo.channelUserId, // to put in your contacts \r\n \"firstName\": this.newContact.value.firstName,\r\n \"lastName\": this.newContact.value.lastName,\r\n \"email\": this.newContact.value.email,\r\n \"phone\": this.newContact.value.phone,\r\n \"company\": this.newContact.value.company,\r\n \"position\": this.newContact.value.position,\r\n \"address\": this.newContact.value.address,\r\n \"notes\": this.newContact.value.notes,\r\n \"isCustom\": true\r\n };\r\n this._contactService.createContact(this.contact)\r\n .subscribe(res => {\r\n if(res.status === 201) {\r\n console.log(\"contact created\", res.body)\r\n this.contact = res.body;\r\n // 💡 upload image to blob here ... sends back event on complete to close modal ... \r\n if(!!this.imageToPreview) {\r\n this.newContactId = this.contact.contactId;\r\n this.imageToSubmit = this.imageToPreview;\r\n } else {\r\n this.completeContactSubmit();\r\n }\r\n } else if (res.status === 409) {\r\n console.log(\"email conflict\")\r\n this.handleEmailConflict();\r\n } else {\r\n console.log(\"error creating contact\", res.status, res.body)\r\n this.isCreatingContact = false;\r\n this._toastService.error(\"There was an error creating new contact.\");\r\n }\r\n });\r\n }\r\n\r\n handleCreateContactImageUploadError(contactToDeleteId: string) {\r\n if(!!contactToDeleteId) {\r\n this._contactService.deleteContact(contactToDeleteId)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n console.log(\"contact removed from image upload error\", contactToDeleteId)\r\n } else {\r\n console.error(\"%c error, cannot delete new contact... \", consoleLogStyle)\r\n }\r\n });\r\n } else {\r\n console.error(\"%c No contactId with imageupload error, cannot delete new contact... \", consoleLogStyle)\r\n }\r\n }\r\n\r\n\r\n handleEmailConflict() {\r\n let targetInput = document.getElementById('contact-email-input');\r\n this.isEditContact ? this.isUpdatingContact = false : this.isCreatingContact = false;\r\n this.showEmailConflictError = true;\r\n this.newContact.patchValue({\r\n email: \"\"\r\n });\r\n targetInput.focus();\r\n }\r\n\r\n handleEmailConflictBlur() {\r\n if(this.showEmailConflictError) {\r\n this.showEmailConflictError = false;\r\n }\r\n }\r\n\r\n // 💡 called on btn click or enter key, checks if image was changed before submit ... \r\n // if image was changed it sends that image to be uploaded and when complete sends back event to update the contact with the new HASH ... \r\n // if the image was NOT changed, it can just update ... \r\n updateContactWithImage() { \r\n this.isUpdatingContact = true;\r\n if(!!this.imageToPreview) {// this is picked up onChanges of profile-img-upload ... to get hash for update ... \r\n this.newContactId = this.contactToEdit.contactId;\r\n this.imageToSubmit = this.imageToPreview;\r\n // this.isDeletingImg = false;//incase an image was removed before\r\n console.log(\"%c updating contact with image change \", consoleLogStyle)\r\n } else {\r\n this.updateContact(null);\r\n console.log(\"%c updating contact with NO image change \", consoleLogStyle)\r\n }\r\n }\r\n\r\n // 💡 an updated contact needs the new image HASH before it can update, creating does not ... \r\n updateContact(newImageHash:string) {\r\n this.isUpdatingContact = true;\r\n console.log(\"updating contact\", newImageHash)\r\n this.contact = {\r\n \"channelUserId\": this.userInfo.channelUserId, // to put in your contacts \r\n \"contactId\": this.contactToEdit.contactId,\r\n \"firstName\": this.newContact.value.firstName,\r\n \"lastName\": this.newContact.value.lastName,\r\n \"email\": this.newContact.value.email,\r\n \"phone\": this.newContact.value.phone,\r\n \"company\": this.newContact.value.company,\r\n \"position\": this.newContact.value.position,\r\n \"address\": this.newContact.value.address,\r\n \"notes\": this.newContact.value.notes,\r\n \"hash\": !!newImageHash ? newImageHash : this.isImageDefault ? '1' : this.contactToEdit.hash,\r\n \"isFavorite\": this.contactToEdit.isFavorite,\r\n \"isCustom\": true\r\n };\r\n this._contactService.updateContact(this.contactToEdit.contactId, this.contact)\r\n .subscribe(res => {\r\n if(res.status === 204) {\r\n console.log(\"contact updated\")\r\n // 🚧 upload image to blob here ...\r\n // if (this.isDeletingImg) {\r\n // this.removeProfilePhoto();\r\n // }\r\n this.completeContactSubmit();\r\n } else if (res.status === 409) {\r\n console.log(\"email conflict\")\r\n this.handleEmailConflict();\r\n } else {\r\n console.log(\"error updating contact\", res.status)\r\n this.isUpdatingContact = false;\r\n this._toastService.error(\"There was an error updating this contact.\")\r\n }\r\n });\r\n }\r\n\r\n completeContactSubmit(newContactHash?:string) {\r\n if(this.isEditContact) {\r\n this.isUpdatingContact = false;\r\n this.onCompleteEvent.emit(this.contact);\r\n } else {\r\n if(newContactHash) {\r\n this.contact.hash = newContactHash;\r\n } else {\r\n this.contact.hash = '1';\r\n }\r\n this.isCreatingContact = false;\r\n this.onCompleteEvent.emit(this.contact);\r\n }\r\n }\r\n\r\n keydownEnterForm() {\r\n console.log(\"keydown enter!\")\r\n if(this.isEditContact) {\r\n this.updateContactWithImage();\r\n } else if(!this.isEditContact) {\r\n this.createContact();\r\n }\r\n }\r\n\r\n stopProp(e: Event) {\r\n // console.log('oi')\r\n e.stopPropagation();\r\n }\r\n prevDef(e: Event) {\r\n e.preventDefault();\r\n }\r\n\r\n\r\n // image upload && preview functions ... \r\n displayPhotoEditor() {\r\n let hiddenFileInput = document.getElementById('file-upload');\r\n hiddenFileInput.click();\r\n }\r\n\r\n // to preview image (after validation) ... \r\n recieveImage(image: File) {\r\n console.log(\"image recieved from input\", image)\r\n const reader = new FileReader();\r\n reader.readAsDataURL(image);\r\n reader.addEventListener('load', (e) => {\r\n console.log(e.target.result) // file type & img src ... \r\n let img = e.target.result.toString();\r\n let target = document.getElementById('contact-image');\r\n target.src = img;\r\n this.isImageDefault = false;\r\n this.isImageUploading = false; \r\n this.imageToPreview = image; // to upload to blob when form submited ... \r\n });\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.formTouchedEvent.emit();\r\n // console.log('Form Touched Emiited', this.isFormTouched);\r\n }\r\n }\r\n\r\n // ❌ remove commented after testing ... \r\n removeProfilePhoto() {\r\n // console.log(\"removed clicked!!!!!!!!!!!\")\r\n this.isImageUploading = true;\r\n let target = document.getElementById('contact-image');\r\n target.src = 'https://profile-images.azureedge.us/1';\r\n this.isImageDefault = true;\r\n this.imageToPreview = null;\r\n this.isImageUploading = false;\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.formTouchedEvent.emit();\r\n // console.log('Form Touched Emiited', this.isFormTouched);\r\n }\r\n // if(this.isEditContact) {\r\n // if(this.imageToPreview) {\r\n // let target = document.getElementById('contact-image');\r\n // target.src = 'https://profile-images.azureedge.us/1';\r\n // this.isImageDefault = true;\r\n // this.imageToPreview = null;\r\n // this.isImageUploading = false;\r\n // } else {\r\n // this._fileStorageService.fileStorageCustomContactProfileImageDelete(this.contactToEdit.contactId)\r\n // .subscribe(res => {\r\n // if(res.status === 200) {\r\n // console.log(\"remove success\",res);\r\n // let target = document.getElementById('contact-image');\r\n // target.src = 'https://profile-images.azureedge.us/1';\r\n // this.isImageDefault = true;\r\n // this.imageToPreview = null;\r\n // this.isImageUploading = false;\r\n // // this.updateContact(null);\r\n // // if(!this.isFormTouched) {\r\n // // this.isFormTouched = true;\r\n // // this.formTouchedEvent.emit();\r\n // // // console.log('Form Touched Emiited', this.isFormTouched);\r\n // // }\r\n // } else {\r\n // console.log(\"remove error\",res);\r\n // this.isImageUploading = false;\r\n // this._toastService.error('There was an error removing this photo.')\r\n // }\r\n // });\r\n // }\r\n // } else {\r\n // let target = document.getElementById('contact-image');\r\n // target.src = 'https://profile-images.azureedge.us/1';\r\n // this.isImageDefault = true;\r\n // this.imageToPreview = null;\r\n // this.isImageUploading = false;\r\n // if(!this.isFormTouched) {\r\n // this.isFormTouched = true;\r\n // this.formTouchedEvent.emit();\r\n // // console.log('Form Touched Emiited', this.isFormTouched);\r\n // }\r\n // }\r\n }\r\n\r\n contactImgChange(status: boolean) {\r\n this.isImageUploading = status;\r\n if(!this.isImageUploading) {\r\n if(this.isUpdatingContact) {\r\n this.isUpdatingContact = false; // if error from profile-image-upload, isImageUploading = false is emited, so if updating set to false\r\n } else {\r\n this.isCreatingContact = false;\r\n }\r\n }\r\n }\r\n\r\n // drag & drop images ... \r\n imageDragEnter(e: Event) {\r\n let target = e.target as HTMLElement;\r\n target.classList.add('active');\r\n }\r\n\r\n imageDragLeave(e: Event) {\r\n let target = e.target as HTMLElement;\r\n target.classList.remove('active');\r\n }\r\n\r\n imgageDragOver(e: Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let target = e as DragEvent;\r\n target.dataTransfer.dropEffect = 'copy';\r\n }\r\n\r\n imageDrop(e: Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n let target = e.target as HTMLElement;\r\n target.classList.remove('active');\r\n this.isImageUploading = true;\r\n let drop = e as DragEvent;\r\n let { files } = drop.dataTransfer;\r\n console.log('image droped', files)\r\n this.imageValidation(files);\r\n }\r\n\r\n imageValidation(files: FileList) {\r\n let file = files[0];\r\n let fileReader = new FileReader();\r\n fileReader.onloadend = (e: any) => {\r\n let arr = (new Uint8Array(e.target.result)).subarray(0, 2);\r\n // console.log(\"buffer array :::\", arr)\r\n let hex = \"\";\r\n for (let i = 0; i < arr.length; i++) {\r\n hex += arr[i].toString(16);\r\n }\r\n // console.log(\"file hex :::\", hex)\r\n // Check the file signature against known types\r\n let img = ['8950', 'FFD8', 'FF0A', '0A87'];\r\n \r\n if (img.includes(hex.toUpperCase())) {\r\n // console.log(\"is IMAGE :::\", hex)\r\n this.recieveImage(file);\r\n return;\r\n } else {\r\n this.isImageUploading = false;\r\n this._toastService.error(\"Can only upload Image files : .png, .jpg, .jpeg, .jfif, .jpegXL.\");\r\n return;\r\n }\r\n };\r\n fileReader.readAsArrayBuffer(file);\r\n }\r\n\r\n handleBrokenImage(e) {\r\n console.info(\"%c broken image log::: \", consoleLogStyle, e);\r\n let target = document.getElementById('contact-image');\r\n target.src = 'https://profile-images.azureedge.us/1';\r\n this.isImageDefault = true;\r\n this.imageToPreview = null;\r\n this._toastService.error(\"The image uploaded is broken, please try another.\");\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n

Create New Contact

\r\n

Edit Contact

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \"Profile\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n First & last name are required.\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n Email is required.\r\n
\r\n
\r\n Valid email - (example@gmail.com)\r\n
\r\n
\r\n \r\n
\r\n Valid phone - (555) 555-5555\r\n
\r\n
\r\n \r\n \r\n
\r\n Email already in use.\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { Validators, FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\n\r\n\r\n\r\n@Component({\r\n selector: \"create-project\",\r\n templateUrl: \"./create-project.component.html\",\r\n styleUrls: [\"./create-project.component.scss\"],\r\n})\r\nexport class CreateProjectComponent implements OnInit, OnDestroy {\r\n\r\n @Input(\"userInfo\") userInfo: any;\r\n @Output('onCompleteEvent') onCompleteEvent = new EventEmitter();\r\n @Output('formTouchedEvent') formTouchedEvent = new EventEmitter();\r\n\r\n public newProject: FormGroup;\r\n public isCreatingProject: boolean = false;\r\n public isFormTouched: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private fb: FormBuilder, \r\n private _apiCallsService: ApiCallsService, \r\n private _toastService: ToastNotificationService, \r\n ) {}\r\n\r\n ngOnInit(): void {\r\n console.log(\"%c create chan modal? \", consoleLogStyle, this.userInfo)\r\n this.createForm();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n createForm() {\r\n this.newProject = this.fb.group({\r\n projectName: [\"\", [Validators.required, Validators.minLength(2)]], // 200max set on input...\r\n });\r\n this.subscriptions.push(this.newProject.valueChanges.subscribe(data => {\r\n // console.log('Form changes', data);\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.formTouchedEvent.emit();\r\n console.log('Form Touched Emiited', this.isFormTouched);\r\n }\r\n }));\r\n }\r\n\r\n get newProjectControls() {\r\n return this.newProject.controls;\r\n }\r\n\r\n createProject() {\r\n this.isCreatingProject = true;\r\n let newProj = {\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": this.newProject.value.projectName,\r\n };\r\n this._apiCallsService.postProject(newProj)\r\n .subscribe(res => {\r\n // \r\n if (res.status === 201) {\r\n console.log(\"%c project created\", consoleLogStyle, res.body);\r\n let newChannelMade = res.body;\r\n this.isCreatingProject = false;\r\n this.onCompleteEvent.emit(newChannelMade); // pushes to project[] ...\r\n } else {\r\n console.log(\"error creating project\")\r\n this.isCreatingProject = false;\r\n this._toastService.error(\"There was an error creating new project.\");\r\n }\r\n });\r\n }\r\n\r\n // created if the user doesn't have a 'Shared Folders' project\r\n // Project/Channel structure used for sharing folders/files\r\n /*\r\n createSharedFolderProject() {\r\n this.isCreatingProject = true;\r\n let newProj = {\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": \"Shared Folders\",\r\n };\r\n this._apiCallsService.postProject(newProj)\r\n .subscribe(res => {\r\n // \r\n if (res.status === 201) {\r\n console.log(\"%c project created\", consoleLogStyle, res.body);\r\n let newChannelMade = res.body;\r\n this.isCreatingProject = false;\r\n this.onCompleteEvent.emit(newChannelMade); // pushes to project[] ...\r\n } else {\r\n console.log(\"error creating project\")\r\n this.isCreatingProject = false;\r\n this._toastService.error(\"There was an error creating new project.\");\r\n }\r\n });\r\n }\r\n */\r\n}\r\n\r\n","
\r\n \r\n
\r\n
\r\n

Create New Project

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n Name is required.\r\n
\r\n
\r\n Name must be at least 2 characters.\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-device-check',\r\n templateUrl: './device-check.component.html',\r\n styleUrls: ['./device-check.component.scss']\r\n})\r\nexport class DeviceCheckComponent implements OnInit {\r\n public testVideo: any;\r\n public videoSelect: any;\r\n public resolutionSelect: any;\r\n public audioSelect: any;\r\n\r\n public audioDevices: any = [];\r\n public videoDevices: any = [];\r\n public devicePreferences: any = {}\r\n\r\n public audioPermissions: boolean = true;// False if Denied or not selected\r\n public videoPermissions: boolean = true;// False if Denied or not selected\r\n public permissionsError: boolean = false;\r\n\r\n public streamError: any = {\r\n \"isError\": false, // True if Stream Error\r\n \"errorType\": \"\"\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n if (document.querySelector(\"#testVideo\")) {\r\n this.testVideo = document.querySelector(\"#testVideo\");\r\n }\r\n this.initalPreferences();\r\n }\r\n\r\n initalPreferences() {\r\n this.devicePreferences = JSON.parse(localStorage.getItem(\"devicePreferences\"));\r\n\r\n if (this.devicePreferences === null) {\r\n this.devicePreferences = {\r\n \"videoId\": \"default\",\r\n \"audioId\": \"default\",\r\n \"videoRes\": 480\r\n };\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n }\r\n\r\n console.log(this.devicePreferences);\r\n this.setMediaDevices();\r\n }\r\n\r\n public checkDevices(videoBool: boolean, audioBool: boolean) {\r\n const constraints = {\r\n video: videoBool,\r\n audio: audioBool\r\n };\r\n navigator.mediaDevices.getUserMedia(constraints)\r\n .then(() => {\r\n this.setMediaDevices();\r\n })\r\n .catch(err => {\r\n console.log(err.name + \": \" + err.message);\r\n });\r\n }\r\n\r\n private setMediaDevices() {\r\n let videoDevices = [];\r\n let audioDevices = [];\r\n let videoId = this.devicePreferences.videoId;\r\n let audioId = this.devicePreferences.audioId;\r\n this.videoPermissions = true;\r\n this.audioPermissions = true;\r\n navigator.mediaDevices.enumerateDevices()\r\n .then(devices => {\r\n devices.forEach(device => {\r\n console.log(device);\r\n let option = {\r\n \"deviceId\": device.deviceId,\r\n \"groupId\": device.groupId,\r\n \"kind\": device.kind,\r\n \"label\": device.label\r\n };\r\n if (device.kind === 'audioinput') {\r\n if (device.label == \"\") {\r\n this.audioPermissions = false;\r\n }\r\n audioDevices.push(option);\r\n } else if (device.kind === 'videoinput') {\r\n if (device.label == \"\") {\r\n this.videoPermissions = false;\r\n }\r\n videoDevices.push(option);\r\n } else {\r\n console.log(\"Other Device: \" + device.kind + \": \" + device.label +\r\n \" id = \" + device.deviceId + \" was found\");\r\n }\r\n });\r\n if (videoDevices.length > 0) {\r\n if (this.streamError.errorType === \"no-video\") {\r\n this.streamError.errorType = \"\";\r\n } else if (this.streamError.errorType === \"no-video-audio\") {\r\n this.streamError.errorType = \"no-audio\";\r\n }\r\n if (videoDevices.some(device => device.deviceId === videoId)) {\r\n console.log(\"video is here\");\r\n videoDevices.sort((x, y) => { return x.deviceId == videoId ? -1 : y.deviceId == videoId ? 1 : 0; });\r\n } else {\r\n console.log(\"video is not here\");\r\n this.devicePreferences.videoId = videoDevices[0].deviceId;\r\n }\r\n } else {\r\n this.videoPermissions = false;\r\n if (this.streamError.errorType === \"\") {\r\n this.streamError.errorType = \"no-video\";\r\n } else if (this.streamError.errorType === \"no-audio\") {\r\n this.streamError.errorType = \"no-video-audio\";\r\n }\r\n }\r\n if (audioDevices.length > 0) {\r\n if (this.streamError.errorType === \"no-audio\") {\r\n this.streamError.errorType = \"\";\r\n } else if (this.streamError.errorType === \"no-video-audio\") {\r\n this.streamError.errorType = \"no-video\";\r\n }\r\n if (audioDevices.some(device => device.deviceId === audioId)) {\r\n console.log(\"audio is here\");\r\n audioDevices.sort((x, y) => { return x.deviceId == audioId ? -1 : y.deviceId == audioId ? 1 : 0; });\r\n } else {\r\n console.log(\"audio is not here\");\r\n this.devicePreferences.audioId = audioDevices[0].deviceId;\r\n }\r\n } else {\r\n this.audioPermissions = false;\r\n if (this.streamError.errorType === \"\") {\r\n this.streamError.errorType = \"no-audio\";\r\n } else if (this.streamError.errorType === \"no-video\") {\r\n this.streamError.errorType = \"no-video-audio\";\r\n }\r\n }\r\n if (!this.videoPermissions || !this.audioPermissions) {\r\n this.checkDevices(true, true);\r\n }\r\n })\r\n .catch(err => {\r\n console.log(err.name + \": \" + err.message);\r\n });\r\n this.videoDevices = videoDevices;\r\n this.audioDevices = audioDevices;\r\n }\r\n}\r\n","\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n

Please set devices to allow and try again

\r\n
\r\n
\r\n
\r\n

Settings

\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n

No Devices Found,\r\n Try Again\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n

No Devices Found,\r\n Try Again\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n Check For New Devices\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, Output, EventEmitter, Input } from \"@angular/core\";\r\n\r\nimport { EmojiButton } from \"@joeattardi/emoji-button\";\r\n\r\n@Component({\r\n selector: \"emoji-button\",\r\n templateUrl: \"./emoji-button.component.html\",\r\n styleUrls: [\"./emoji-button.component.scss\"],\r\n})\r\nexport class EmojiButtonComponent implements OnInit {\r\n @Output() sendEmoji = new EventEmitter();\r\n\r\n @Input('channelId') channelId: string;\r\n @Input('isDM') isDm: boolean;\r\n\r\n picker = new EmojiButton({\r\n position: \"top-start\",\r\n theme: \"dark\",\r\n autoHide: false,\r\n rows: 3,\r\n emojiVersion: \"12.0\",\r\n showVariants: false,\r\n showPreview: false,\r\n showSearch: true,\r\n autoFocusSearch: false\r\n });\r\n\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n this.picker.on(\"emoji\", (selection) => {\r\n console.log(\"emoji:\", selection);\r\n this.sendEmoji.emit(selection.emoji);\r\n });\r\n }\r\n\r\n showEmojiPicker() {\r\n const target = document.getElementById(\"emoji-trigger\" + this.channelId);\r\n this.picker.togglePicker(target);\r\n // this.addClass();\r\n console.log(\"emoji picker open\", target);\r\n }\r\n\r\n // addClass() {\r\n // let wrapper = document.querySelector('.emoji-picker__wrapper');\r\n // console.log(\"wrapper\", wrapper)\r\n // }\r\n}\r\n","\r\n\r\n\r\n \r\n","import {\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n SimpleChanges,\r\n} from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { ApiCallsService } from \"src/app/services/api-calls.service\";\r\nimport { ChannelService } from \"src/app/services/channel-service\";\r\nimport { MeetingService } from \"src/app/services/meeting.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\nimport * as moment from 'moment';\r\nimport { Constants } from 'src/app/constants';\r\nimport { Router } from \"@angular/router\";\r\nimport {\r\n listAnimationWrapLong,\r\n listAnimationItemLong,\r\n fadeInFast,\r\n customExitTransition\r\n} from \"src/app/animations/global-animations\";\r\nimport { ChannelUser } from \"../../interface/channel-user\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { MeetingEvent } from \"../../interface/meeting-event\";\r\nimport { ChannelFull } from \"../../interface/channel-full\";\r\n\r\n\r\n\r\n@Component({\r\n selector: \"events\",\r\n templateUrl: \"./events.component.html\",\r\n styleUrls: [\"./events.component.scss\"],\r\n animations: [listAnimationWrapLong, listAnimationItemLong, fadeInFast]\r\n})\r\nexport class EventsComponent implements OnInit, OnDestroy, OnChanges {\r\n\r\n @Input('userInfo') userInfo: ChannelUser; // 💡 must track from onChanges, initial val will be undefined until api return from home ... \r\n @Input('incomingChannelObject') incomingChannelObject: ChannelFull; //Will show events within that channel\r\n @Input('preventEventClick') preventEventClick: boolean;\r\n @Input('isViewer') isViewer: boolean;\r\n\r\n public isLoadingMeetings: boolean = true;\r\n public meetings: Array = [];\r\n public isLoadingMoreMeetings: boolean;\r\n public meetingsPag: any = {};\r\n\r\n public displayNewMeetingModal: boolean = false;\r\n public isCreatingQuick: boolean;\r\n public newMeeting: MeetingEvent = {};\r\n public newChannel: any = {};\r\n public meetingProject: any;\r\n public meetingType: string = 'quick';\r\n\r\n public projectId: string;\r\n public channelInfo: ChannelFull;\r\n public channelId: string;\r\n public meetingNotFound: boolean = false;\r\n public isNDIATenant: boolean = false; // 💡 need to use this instead of checking if Viewer\r\n\r\n public meetingToCancel: any = {\r\n meetingId: null,\r\n channelId: null,\r\n meetingIdx: null,\r\n };\r\n\r\n public todaysCurrentDateTime: any = new Date();\r\n public setCurrentDateTimeInterval: any;\r\n\r\n public displayScheduleModal: boolean = false;\r\n public displayScheduleWarning: boolean = false;\r\n // public editChannelObject: any = null;\r\n public editMeetingId: string = null;\r\n public editMeetingType: string = null;\r\n\r\n public selectedMeeting: MeetingEvent;\r\n public displayMeetingInfoModal: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n public displayMeetingTokenModal: boolean;\r\n\r\n constructor(\r\n private _toastService: ToastNotificationService,\r\n private _channelService: ChannelService,\r\n private _meetingService: MeetingService,\r\n private _apiCallsService: ApiCallsService,\r\n private _router: Router,\r\n ) {\r\n\r\n // 💡 need to also check if is Creator so will not update that user if meeting canceled ...\r\n // ❌ i need some data back from this ... fires too often ... \r\n this.subscriptions.push(this._channelService.onUpdateMeetingListEvent$.subscribe((data) => {\r\n // console.log(\"%c 🤣 meeting list updated events home!!! \", consoleLogStyle, data)\r\n if (this.incomingChannelObject) {\r\n this._getChannelMeetingsOnly();\r\n } else {\r\n this._getMeetings();\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"closeScheduleModal\") {\r\n this.closeScheduleModal();\r\n }\r\n if (data.type === \"cancelMeeting\") {\r\n // console.log(\"%c meeting to cancel?\", consoleLogStyle, this.meetingToCancel)\r\n this.cancelMeeting(\r\n this.meetingToCancel.meetingId, \r\n this.meetingToCancel.channelId, \r\n data.checkboxConfirm, \r\n this.meetingToCancel.meetingIdx\r\n );\r\n this.meetingToCancel = {\r\n meetingId: null,\r\n channelId: null\r\n };\r\n }\r\n if(data.type === \"refreshToken\"){\r\n this.refreshMeetingToken();\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n //checks if user is in NDIA Tenant\r\n if(this.userInfo && this.userInfo.tenant == 'NDIA')\r\n this.isNDIATenant = true;\r\n // interval is cleared onDestroy \r\n this.setCurrentDateTimeInterval = setInterval(() => {\r\n this.todaysCurrentDateTime = new Date().toISOString(); // so we can use math on date for comparison: todaysDate > meeting.start\r\n // console.log(\"%c Current time \", consoleLogStyle, this.todaysCurrentDateTime);\r\n }, 1000); // keep current time for to show the \"meeting in progress badge\"\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.userInfo) {\r\n if (!!this.userInfo) {\r\n // console.log(\"%c 👤 user info input changes EVENTS \", consoleLogStyle, this.userInfo);\r\n if (this.incomingChannelObject) {\r\n this._getChannelMeetingsOnly();\r\n } else {\r\n this._getMeetings();\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n clearInterval(this.setCurrentDateTimeInterval);\r\n }\r\n\r\n // not w/ global modal ... small 2 button modal ... \r\n showNewMeetingModal() {\r\n this.displayNewMeetingModal = true;\r\n }\r\n \r\n closeNewMeetingModal() {\r\n this.displayNewMeetingModal = false;\r\n }\r\n\r\n _getMeetings() {\r\n this.isLoadingMeetings = true; \r\n this.meetings = []; \r\n this._meetingService.getUserMeetingsFuture(this.userInfo.channelUserId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.meetings = data.body;\r\n \r\n this.meetingsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n this.isLoadingMeetings = false;\r\n // console.log(\"%c 🎟 meetings events: \", consoleLogStyle, this.meetings)\r\n // console.log(\"🎟 meetings Pagination :::\", this.meetingsPag)\r\n } else if (data.status === 404) {\r\n console.error(JSON.stringify(data));\r\n this.isLoadingMeetings = false;\r\n } else {\r\n this._toastService.error(\"There was an error getting your events.\");\r\n console.error(JSON.stringify(data));\r\n this.isLoadingMeetings = false;\r\n }\r\n });\r\n }\r\n\r\n _getChannelMeetingsOnly() {\r\n this.isLoadingMeetings = true; \r\n this.meetings = []; \r\n this._meetingService.getMeetingsByChannelId(this.incomingChannelObject.channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.meetings = data.body;\r\n this.isLoadingMeetings = false;\r\n // this.meetingsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n // console.log(\"%c 🎟 meetings events: \", consoleLogStyle, this.meetings)\r\n // console.log(\"🎟 meetings Pagination :::\", this.meetingsPag)\r\n } else if (data.status === 404) {\r\n console.error(JSON.stringify(data));\r\n this.isLoadingMeetings = false;\r\n } else {\r\n this._toastService.error(\"There was an error getting your events.\");\r\n console.error(JSON.stringify(data));\r\n this.isLoadingMeetings = false;\r\n }\r\n });\r\n }\r\n\r\n // 💡 infinite scrolling w/ Intersection Observer api ... [(@listAnimationItemLong.done)=\"last ? runPaginationObserver() : ''\"] \r\n // 🌐 https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API \r\n paginationObserver() {\r\n let lastEl = document.getElementById('LastMeeting'); // grab last El in list [after animation done & is in DOM] \r\n // console.log(\"%c List anime done: run intersect observer 🎯 LAST El: \", consoleLogStyle, lastEl)\r\n if (!!lastEl) {\r\n let observer = new IntersectionObserver(entries => {\r\n entries.forEach(entry => { // can observe multiple El's but will always be an Array of [entries] \r\n // console.log(\"%c is 🎯 El intersecting? \", consoleLogStyle, entry.isIntersecting)\r\n // || entry.intersectionRatio > 0 - also works\r\n if (entry.isIntersecting && entry.intersectionRatio >= 0) { // bottom of view intersecting W/ the top of El \r\n // console.log('%c 🎯 El is IN view run get next page! ', consoleLogStyle);\r\n this._getMoreMeetings(this.meetingsPag.nextPageLink);\r\n observer.unobserve(entry.target); // stop tracking this El, will grab next LastEl \r\n } else {\r\n // console.log('%c 🎯 El OUT of view. ',consoleLogStyle);\r\n }\r\n });\r\n });\r\n observer.observe(lastEl); // track the last El in list \r\n } else {\r\n console.error(\"no last EL for pagination?\", lastEl);\r\n }\r\n }\r\n\r\n _getMoreMeetings(link: any) { // returns 8 results ... 2 page len avg. \r\n this.isLoadingMoreMeetings = true;\r\n this._apiCallsService.getGenericForPagination(link)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.meetings = this.meetings.concat(data.body);\r\n this.meetingsPag = JSON.parse(data.headers.get('X-Pagination'));\r\n this.isLoadingMoreMeetings = false;\r\n // console.log(\"%c 🎟 meetings events PAGINATION: \", consoleLogStyle, this.meetings)\r\n } else {\r\n this.isLoadingMoreMeetings = false;\r\n this._toastService.error(\"There was an error getting your events.\");\r\n console.error(JSON.stringify(data));\r\n }\r\n });\r\n }\r\n\r\n public cancelMeetingPrompt(meetingId: string, channelId: string, meetingIdx: number) {\r\n this.meetingToCancel = {\r\n \"meetingId\": meetingId,\r\n \"channelId\": channelId,\r\n \"meetingIdx\": meetingIdx\r\n };\r\n this._toastService.continue(\"Are you sure you want to cancel this Meeting?\", \"cancelMeeting\", \"Notify the other guests\");\r\n }\r\n\r\n private cancelMeeting(meetingId: string, channelId: string, cancelNotification: boolean, meetingIdx: number) {\r\n this.meetings[meetingIdx].isCancelingOrRemoving = true;\r\n let meetingObj = {\r\n \"meetingId\": meetingId,\r\n \"cancelNotification\": cancelNotification\r\n };\r\n // console.log(\"cancel meeting?\")\r\n this._meetingService.cancelMeeting(meetingObj)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.meetings[meetingIdx].isCancelingOrRemoving = false;\r\n // console.log(\"meeting Canceled\", res)\r\n this.meetings[meetingIdx].isCanceled = true; // local user update \r\n let isNewMeeting = false;\r\n this._channelService.updateUpcomingMeetingsList(meetingId, isNewMeeting, channelId); // global sig-r update \r\n } else {\r\n this.meetings[meetingIdx].isCancelingOrRemoving = false;\r\n this._toastService.error(\"There was an error canceling your event.\");\r\n // console.error(\"error canceling meeting?\", res)\r\n }\r\n });\r\n }\r\n\r\n removeMeeting(meetingId: string, meetingIdx: number) {\r\n this.meetings[meetingIdx].isCancelingOrRemoving = true;\r\n this.hideMeetingOptionsDropdown(meetingIdx);\r\n let meetingObj = {\r\n \"meetingId\": meetingId,\r\n \"userId\": this.userInfo.channelUserId\r\n };\r\n // console.log(\"remove meeting\")\r\n this._meetingService.removeMeeting(meetingObj)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // this.meetings[meetingIdx].isCancelingOrRemoving = false;\r\n // console.log(\"meeting removed\", res)\r\n let updatedMeetings = this.meetings.filter(meeting => meeting.meetingId !== meetingId);\r\n let element = document.getElementsByClassName('meetings-container')[meetingIdx];\r\n let element2 = document.getElementsByClassName('meetings-container')[meetingIdx + 1] || null;\r\n customExitTransition(element,element2);\r\n setTimeout(() => {\r\n this.meetings = updatedMeetings;\r\n }, 262);\r\n } else {\r\n this.meetings[meetingIdx].isCancelingOrRemoving = false;\r\n this._toastService.error(\"There was an error removing your event.\");\r\n // console.log(\"error removing meeting?\", res)\r\n }\r\n });\r\n }\r\n\r\n // create new quick meeting [not scheduled, green btn] ... \r\n createQuickMeet() {\r\n this.isCreatingQuick = true;\r\n // console.log(\"creating ad-hoc meeting start\");\r\n this.meetingHub();\r\n }\r\n\r\n meetingHub() {\r\n this.meetingProject = 'QuickMeetingApp';\r\n this._getProject();\r\n }\r\n\r\n _getProject() {\r\n this._apiCallsService.getProjectByName(this.meetingProject)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.projectId = data.body[0].teamProjectId;\r\n this.newChannelInit();\r\n } else {\r\n this._toastService.error(\"There was an error creating your event.\");\r\n console.error(\"error creating meeting - get project:\",data);\r\n this.isCreatingQuick = false;\r\n }\r\n });\r\n }\r\n\r\n newChannelInit() {\r\n this.newChannel = {\r\n \"teamProjectId\": this.projectId,\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": \"\",\r\n \"type\": this.meetingType,\r\n \"videoType\": \"jitsi\",\r\n \"topic\": null,\r\n \"inviteCode\": null,\r\n \"welcome\": null,\r\n \"deleteRule\": 1,\r\n \"deleteInterval\": 1440,\r\n \"scope\": \"Site\",\r\n \"private\": true,\r\n \"closed\": false,\r\n \"inVideoCall\": false,\r\n \"inScreenShare\": false,\r\n };\r\n this.newMeeting = {\r\n \"chatUserId\": this.userInfo.channelUserId,\r\n \"chatRoomId\": \"\",\r\n \"title\": \"\",\r\n \"body\": \"\",\r\n \"presentationUrl\": \"\",\r\n \"location\": \"\",\r\n \"start\": \"\",\r\n \"end\": \"\",\r\n \"allDay\": true,\r\n \"private\": true,\r\n \"markAsBusy\": false,\r\n \"displayAttendance\": true\r\n }\r\n // console.log(\"new quick channel init from home\", this.newChannel)\r\n // console.log(\"new quick meeting init from home\", this.newMeeting)\r\n this._postChannel();\r\n }\r\n\r\n _postChannel() {\r\n this._apiCallsService.postChannel(this.newChannel)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n let newChannel = res.body\r\n // console.log(\"newchannel being posted: \" + JSON.stringify(newChannel));\r\n this._postMeeting(newChannel);\r\n } else {\r\n this._toastService.error(\"There was an error creating your event.\");\r\n console.error(\"error creating meeting - post channel:\",res);\r\n this.isCreatingQuick = false;\r\n }\r\n });\r\n }\r\n\r\n _postMeeting(channel: any) {\r\n // console.log(\"channel? ::::\", channel)\r\n this.newMeeting.chatRoomId = channel.channelId;\r\n this.newMeeting.title = \"quick meeting\";\r\n this.newMeeting.body = \"quick meeting\";\r\n this.newMeeting.presentationUrl = \"\" + Constants.unitySite + 'channel/' + channel.channelId + \"\";\r\n this.newMeeting.location = \"\" + Constants.unitySite + 'channel/' + channel.channelId + \"\";\r\n this.newMeeting.private = channel.private;\r\n this.newMeeting.start = moment().toDate();\r\n this.newMeeting.end = moment().add(1, 'days').toDate();\r\n // console.log(\"new meeting created from home :: ::\", this.newMeeting)\r\n this._meetingService.postMeeting(this.newMeeting)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n let meeting = res.body;\r\n\r\n // REMOVED THIS SINCE THE QUICK MEETING CREATOR IS ALREADY ADDED?? ////CG \r\n // this._addMeetingAttendees(this.userInfo.channelUserId, meeting.meetingId);\r\n \r\n this._getChannel(channel.channelId);\r\n // console.log(res.body);\r\n // console.log(\"new meeting created from home :: ::\", meeting)\r\n // console.log(\"MeetingId: \" + meeting.meetingId + \" channelId: \" + channel.channelId)\r\n let isNewMeeting = true;\r\n this._channelService.updateUpcomingMeetingsList(meeting.meetingId, isNewMeeting, channel.channelId);\r\n } else {\r\n this._toastService.error(\"There was an error creating your event.\");\r\n console.error(\"error creating event from post meeting\",res);\r\n this.isCreatingQuick = false;\r\n }\r\n });\r\n }\r\n\r\n _addMeetingAttendees(userId: any, meetingId: any) {\r\n let attendee = {\r\n \"channelUserId\": userId,\r\n \"meetingId\": meetingId\r\n };\r\n this._meetingService.postMeetingAttendee(attendee)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Meeting Attendee Added ::\", res.body);\r\n } else {\r\n this._toastService.error(\"There was an error adding attendees your event.\");\r\n // console.error(\"error creating meeting - add meeting attendees:\",res);\r\n this.isCreatingQuick = false;\r\n }\r\n });\r\n }\r\n\r\n _getChannel(channelId: string) {\r\n this._apiCallsService.getChannel(channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n if (data.body.type.toLowerCase() === 'quick') {\r\n this.channelInfo = data.body;\r\n this.channelId = this.channelInfo.channelId;\r\n this.navigateToQuickMeeting();\r\n } else {\r\n this.meetingNotFound = true;\r\n this._toastService.error(\"There was an error creating your event.\");\r\n console.error(\"meeting not found? :\", data);\r\n this.isCreatingQuick = false;\r\n }\r\n } else {\r\n this.meetingNotFound = true;\r\n this._toastService.error(\"There was an error creating your event.\");\r\n console.error(\"meeting not found? :\", data.status);\r\n this.isCreatingQuick = false;\r\n }\r\n });\r\n }\r\n\r\n navigateToQuickMeeting() {\r\n this.isCreatingQuick = false;\r\n this._router.navigate(['/channel', this.channelId]);\r\n }\r\n\r\n // utils \r\n prevDefStopProp(e: Event) {\r\n // console.log('oi')\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n editMeeting(meetingId: string, meetingType: string) {\r\n if (meetingType === \"quick\") {\r\n this.showScheduleModal(meetingId, \"quick\");\r\n } else {\r\n this.showScheduleModal(meetingId, \"channel\");\r\n }\r\n }\r\n showScheduleModal(meetingId: string, meetingType: string) {\r\n this.editMeetingId = meetingId;\r\n this.editMeetingType = meetingType;\r\n this.closeNewMeetingModal();\r\n this.displayScheduleModal = true;\r\n }\r\n closeScheduleModal(isOnFormComplete?: boolean) {\r\n this.displayScheduleWarning = false;\r\n this.displayScheduleModal = false;\r\n this.editMeetingId = null;\r\n this.editMeetingType = null;\r\n // if (isOnFormComplete) {\r\n // if (this.incomingChannelObject) {\r\n // this._getChannelMeetingsOnly();\r\n // } else {\r\n // this._getMeetings();\r\n // }\r\n // }\r\n }\r\n closeScheduleModalConfirm() {\r\n if (this.displayScheduleWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeScheduleModal\");\r\n } else {\r\n this.closeScheduleModal();\r\n }\r\n }\r\n clickOffScheduleModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n switch (value) {\r\n case 'schedule-modal': {\r\n if (this.displayScheduleWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"closeScheduleModal\");\r\n } else {\r\n this.closeScheduleModal();\r\n }\r\n break;\r\n }\r\n case 'meeting-info-modal': {\r\n this.closeMeetingInfoModal();\r\n break;\r\n }\r\n default: return;\r\n }\r\n }\r\n\r\n // meeting info modal\r\n showMeetingInfoModal(idx: number, inProgress: boolean) {\r\n this.selectedMeeting = this.meetings[idx];\r\n if(inProgress) {\r\n this.selectedMeeting.inProgress = true;\r\n this.displayMeetingInfoModal = true;\r\n } else {\r\n this.selectedMeeting.inProgress = false;\r\n this.displayMeetingInfoModal = true;\r\n }\r\n }\r\n closeMeetingInfoModal() {\r\n this.displayMeetingInfoModal = false;\r\n }\r\n\r\n showMeetingOptionsDropdown(i: number, e?: Event) {\r\n const options = document.getElementById(`meeting-options-dropdown-${i}`);\r\n options.classList.add('active');\r\n \r\n // also hide scrollbar ... \r\n let scrollBox = document.getElementById('eventScrollbox');\r\n scrollBox.classList.add('hidden');\r\n }\r\n\r\n hideMeetingOptionsDropdown(i: number, e?: Event) {\r\n const options = document.getElementById(`meeting-options-dropdown-${i}`);\r\n options.classList.remove('active');\r\n \r\n let scrollBox = document.getElementById('eventScrollbox');\r\n scrollBox.classList.remove('hidden');\r\n }\r\n\r\n //For Join Call\r\n joinChannelCall(e: Event) {\r\n this.prevDefStopProp(e);\r\n this._channelService.jitsiSelfJoinEvent(this.incomingChannelObject.channelId);\r\n }\r\n\r\n showMeetingTokenModal(idx: number, inProgress: boolean){\r\n this.selectedMeeting = this.meetings[idx];\r\n\r\n if(inProgress) {\r\n this.selectedMeeting.inProgress = true;\r\n this.displayMeetingTokenModal = true;\r\n console.log(\"Meeting Token Modal: true\")\r\n } else {\r\n this.selectedMeeting.inProgress = false;\r\n this.displayMeetingTokenModal = true;\r\n }\r\n\r\n }\r\n closeMeetingTokenModal() {\r\n this.displayMeetingTokenModal = false;\r\n }\r\n\r\n copyMeetingToken(){\r\n navigator.clipboard.writeText(this.selectedMeeting.presentationUrl);\r\n this._toastService.info(\"Meeting token copied!\");\r\n }\r\n\r\n public refreshMeetingTokenPrompt() {\r\n this._toastService.continue(\"Are you sure you want to create a new token?\", \"refreshToken\");\r\n }\r\n\r\n refreshMeetingToken(){\r\n this._meetingService.putRefreshMeetingToken(this.selectedMeeting.meetingId, this.selectedMeeting)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.selectedMeeting.presentationUrl = res.body.meetingToken;\r\n this._toastService.info(\"Meeting token refreshed!\");\r\n } else if (res.status === 404) {\r\n console.error(JSON.stringify(res));\r\n } else {\r\n this._toastService.error(\"There was an error refreshing the meeting token.\");\r\n console.error(JSON.stringify(res));\r\n }\r\n });\r\n \r\n }\r\n}\r\n","\r\n
\r\n\t\r\n\tToday:  {{ todaysCurrentDateTime | date: \"MMMM dd, YYYY\" }}\r\n\t\r\n\t

\r\n\t\t{{ incomingChannelObject ? \"Channel Events\" : \"Upcoming Events\" }}\r\n\t

\r\n\t\r\n\t\r\n\t\tNew Meeting\r\n\t\r\n\t\r\n\t\r\n\t\tNDIA Full Schedule\r\n\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\tSchedule a meeting\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t Start a meeting now \r\n\t\t\t\t\r\n\t\t\t\t\t Creating meeting\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t
\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tIn progress \r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tEdit meeting\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tCancel meeting\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tInvite Link\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tRemove meeting\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tRemoving...\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tMeeting info\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ meeting.start + \"Z\" | date: \"EEE, MMM.\" }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{{ meeting.start + \"Z\" | date: \"d\" }}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t{{ meeting.start + \"Z\" | date: \"hh:mm a\" }}\r\n\t\t\t\t\t\t\t\t\r\n \r\n   \r\n \r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ meeting.title }}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\t\tmeeting.body || \" \"\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t

No upcoming events to display.

\r\n\t\t\r\n\t\r\n\t\r\n\t\tNew Channel Meeting\r\n\t\r\n\t\r\n\t\r\n\t\tNDIA Full Schedule\r\n\t\r\n\t\r\n\t
\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t \r\n\t\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t

{{selectedMeeting.title}}

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

Topic:

{{selectedMeeting.body || 'none'}}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

Channel:

\r\n\t\t\t\t{{(selectedMeeting.channelKeyNavigation.type === 'quick') ? 'Quick meeting' : selectedMeeting.channelKeyNavigation.name}}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

Date:

{{selectedMeeting.start + 'Z'|date:'M/d/yyyy'}}
\r\n\t\t\t\t

Time:

{{selectedMeeting.start + 'Z'|date:'h:mm a'}}
\r\n\t\t\t\t

Length:

{{selectedMeeting.allDay ? 'All day' : selectedMeeting.duration|meetingDuration}}
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t

Invite Link: \r\n\t\t\t\t

\r\n\t\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n
\r\n\t\t
\t\r\n\t\r\n\r\n","import { \r\n Component, \r\n OnInit, \r\n OnDestroy, \r\n OnChanges, \r\n Input, \r\n Output,\r\n EventEmitter,\r\n AfterViewInit, \r\n SimpleChanges, \r\n ChangeDetectorRef, \r\n ViewChild, \r\n ElementRef } from '@angular/core';\r\nimport { Validators, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { formatDate } from '@angular/common';\r\nimport { AppComponent } from 'src/app/app.component';\r\nimport { FileStorageService } from 'src/app/services/file-storage.service';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { ChannelService} from 'src/app/services/channel-service';\r\nimport { \r\n fadeIn, \r\n fadeInFast, \r\n rotateInOut, \r\n slideInLeft, \r\n slideInRight, \r\n listAnimationWrap, \r\n listAnimationItem} from 'src/app/animations/global-animations';\r\nimport { BlobServiceClient, BlockBlobClient } from '@azure/storage-blob';\r\nimport { TokenCredential } from '@azure/core-http';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription, Subject } from 'rxjs';\r\nimport { ChannelUser } from '../../interface/channel-user';\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { FileStorageFile, FileStorageUsage } from '../../interface/file-storage-file';\r\nimport { GuestService } from 'src/app/services/guest.service';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { Project } from \"../../interface/project\";\r\nimport { ChannelFull } from \"../../interface/channel-full\";\r\nimport { ChannelCard } from '../../interface/channel-card';\r\nimport { LoaderTargetPlugin } from 'webpack';\r\nimport { invalid } from 'moment';\r\nimport { LEADING_TRIVIA_CHARS } from '@angular/compiler/src/render3/view/template';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'file-storage[componentId]',\r\n templateUrl: './file-storage.component.html',\r\n styleUrls: ['./file-storage.component.scss'],\r\n animations: [\r\n fadeIn, \r\n fadeInFast, \r\n rotateInOut, \r\n slideInLeft, \r\n slideInRight, \r\n listAnimationWrap, \r\n listAnimationItem, \r\n ]\r\n})\r\nexport class FileStorageComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit {\r\n @Input('componentId') componentId: string;// Required ... \r\n\t@Input('isPortable') isPortable: boolean; // if is component; else is fs home.\r\n\r\n // should pass a Channel{} here ... \r\n\t@Input('channelId') channelId: string; // in channel component only\r\n\t@Input('channelName') channelName: string; // in channel component only\r\n @Input('channelContainerName') channelContainerName: string; // in channel component only\r\n\r\n @Input('isGuest') isGuest: boolean; // in channel component only (permissions) \r\n @Input('isOwner') isOwner: boolean; // in channel component only (permissions)\r\n // @Input('isCreator') isCreator: boolean; // in channel component only (permissions) ❌ not currently used ... \r\n\r\n @Input('isSidebar') isSidebar: boolean;\r\n @Input('showFiles') showFiles: boolean;\r\n // @Input('inVideo') inVideo: boolean;\r\n\r\n @Output() channelUpdated = new EventEmitter();\r\n\r\n public isPreLoad: boolean; // to supress error messages while loading ... \r\n\r\n public containerName: string;\r\n public currentFolderArray: any = [{ // this container name is re-set on your/channel files \r\n urlPath: '/',\r\n fileName: '/',\r\n containerName: null,\r\n blodFileId: null,\r\n isFile: false\r\n }];\r\n\r\n public isFilesLoading: boolean;\r\n public filesList: FileStorageFile[] = [];\r\n public fullFilesList: FileStorageFile[] = []; \r\n\r\n public sharedFoldersList: FileStorageFile[] = [];\r\n public personalFilesList: FileStorageFile[] = [];\r\n \r\n public isGettingNextPage = false;\r\n public fileListPagination: any = {};\r\n\r\n public selectedFile: FileStorageFile = null;\r\n\r\n // create folder\r\n public newFolder: FormGroup;\r\n public displayCreateFolderForm = false;\r\n public isFolderSubmitting = false;\r\n\r\n // rename file\r\n public renameFileForm: FormGroup;\r\n public displayRenameFileForm = false;\r\n public isRenameSubmitting = false;\r\n\r\n public isDeleting = false;\r\n public isDownloading = false;\r\n\r\n public displaySearchFilesInput = false;\r\n public isSearching = false;\r\n\r\n public userId: string = null;\r\n public userInfo: ChannelUser = this.appComp.channelUserInfo;\r\n\r\n public isDesktop: boolean;\r\n\r\n public scrollTopBlock: boolean;\r\n\r\n //copying file\r\n public isCopying = false;\r\n public copiedFile: any;\r\n\r\n //File Upload Start \r\n public sasToken: TokenCredential;\r\n public blobServiceClient: BlobServiceClient;\r\n public blockBlobClient: BlockBlobClient;\r\n\r\n public uploadFile: File;\r\n public isFileUploading = false;\r\n public isDuplicateFile = false;\r\n //File Upload End \r\n\r\n // \r\n public currentDateTime: any = new Date();\r\n public formattedCurrentDateTime = '';\r\n public setCurrentDateTime: any;\r\n\r\n // new storage cap ... \r\n public fileStorageUsage: FileStorageUsage;\r\n public showStorageBar: boolean = false;\r\n public hasUnlimitedStorage: boolean = false;\r\n public hasMaxedOutStorage: boolean = false;\r\n @ViewChild('storageBarEl') storageBarEl: ElementRef;\r\n\r\n //file and folder sharing\r\n public displayAddOwnerModal: boolean = false;\r\n public isSharing: boolean = false;\r\n public isUnSharing: boolean = false;\r\n public isAddingOwnerMember: boolean = false;\r\n public isRemovingOwnerMember: boolean = false;\r\n public fileUnread: boolean = true;\r\n public isCreatingChannel: boolean = false; //since a shared folder is a sort of channel\r\n\r\n public displayYourFilesComponent: boolean;\r\n public selectedFileFolderOwners: ChannelCard = {};\r\n public searchUsersList: any[] = [];\r\n public isSharedFolderMember: boolean = false;\r\n public restrictSharedFolderActions: boolean = false;\r\n\r\n public isSharedFolderCreator:boolean;\r\n public sharedFolderUserPool:any[] = [];\r\n\r\n public sharedFolderProjectExists: boolean; // newer\r\n public sharedFolderProject: Project; //newer\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n private projects: Project[] = [];\r\n private sharedFoldersProject: any;\r\n private sharedFolders: ChannelFull[] = []; //shared folders are a special type of Channel\r\n private sharedFolderSelected: boolean = false;\r\n public enteredSharedFolder: boolean = false;\r\n private sharedFoldersDownloaded: boolean = false;\r\n private sharedFoldersDownloading: boolean = false;\r\n private selectedFileIdx: number = 0;\r\n\r\n // for holding the serch string \r\n private searchSubject = new Subject();\r\n\r\n constructor(\r\n private _fileStorageService: FileStorageService,\r\n private _toastService: ToastNotificationService,\r\n public _channelService: ChannelService,\r\n private _apiCallsService: ApiCallsService,\r\n private appComp: AppComponent,\r\n private formBuilder: FormBuilder,\r\n private router: Router,\r\n private _guest: GuestService,\r\n private _auth: AuthService,\r\n // used for change detector ref, handles the Expression __ has changed after it was checked error with screen check\r\n private cdr: ChangeDetectorRef, \r\n ) {\r\n this.subscriptions.push(this._channelService.onSharedFileUploadCompletedEvent$.subscribe((fileUploadObj: any) => {\r\n if(fileUploadObj !== null) {\r\n this._callFileApi();\r\n this.getStorageUsage();\r\n // console.log(fileUploadObj.channelId.toLowerCase() === this.channelId.toLowerCase());\r\n if(this.componentId === 'channel-primary' && fileUploadObj.channelId.toLowerCase() === this.channelId.toLowerCase()) {\r\n this._toastService.file(fileUploadObj.uploaderDisplayName + \" has uploaded \" + fileUploadObj.fileName);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onSharedFileDeleteCompletedEvent$.subscribe((fileDeleteObj: any) => {\r\n if(fileDeleteObj !== null) {\r\n this._callFileApi();\r\n this.getStorageUsage();\r\n if(this.componentId === 'channel-primary' && fileDeleteObj.channelId.toLowerCase() === this.channelId.toLowerCase()) {\r\n this._toastService.file(fileDeleteObj.displayName + \" has deleted \" + fileDeleteObj.fileName);\r\n }\r\n }\r\n }));\r\n\r\n // ✨✨✨ TODO: NEED SIG-R EVENT FOR FILE RE-NAME ... \r\n\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"deleteFileConfirm\") {\r\n this._deleteFileFromAll();\r\n }\r\n if (data.type === \"deleteFolderConfirm\") {\r\n this._deleteFileFromAll();\r\n }\r\n if (data.type === \"deleteSharedFolderConfirm\") {\r\n this._deleteSharedFolder();\r\n }\r\n\r\n //removes self from shared folder they don't own\r\n if (data.type === \"removeSharedFolderConfirm\") {\r\n\r\n this.removeOwner(\r\n this.selectedFile.chatRoomChatUsers.chatUserId,\r\n this.userInfo.displayName\r\n )\r\n\r\n //this._removeSharedFolder();\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit() {\r\n this.isPreLoad = true;\r\n this.createForm();\r\n // interval is cleared onDestroy \r\n this.setCurrentDateTime = setInterval(()=> {\r\n this.currentDateTime = new Date();\r\n this.formattedCurrentDateTime = formatDate(this.currentDateTime, 'EEEE, MMMM d, y h:mm:ss a', 'en-US');\r\n // console.log(\"%c Current time\", consoleLogStyle, this.formattedCurrentDateTime);\r\n }, 1000);\r\n this._getChannelUser();\r\n this.getStorageUsage();\r\n\r\n //creates the search subject for the search debounce\r\n //delays calling the search query until the user paused for the time allotted (400ms here)\r\n //goal is to prevent api calls from firing every single key stroke\r\n this.searchSubject\r\n .pipe(debounceTime(400), distinctUntilChanged())\r\n .subscribe(searchQuery => {\r\n console.log(\"Search Query Passed: \"+ searchQuery); \r\n this._getUsersBySearchQuery(this.selectedFile.chatRoomChatUsers.allChannelUsers);\r\n });\r\n\r\n\r\n\r\n // if(!this.sharedFoldersDownloading && this.currentFolderArray.length === 1 \r\n // && (this.sharedFoldersList === undefined || this.sharedFoldersList.length === 0)) {\r\n // alert(\"checking for shared folders on init\");\r\n // this.sharedFoldersDownloading = true;\r\n // this.checkForSharedFolderProject();\r\n // }\r\n\r\n //this.sharedFoldersProject = this.projectExists(this.projects, \"Shared Folders\");\r\n\r\n // console.log(\"%c (0) is this file-storage portble? \", consoleLogStyle, this.isPortable)\r\n // console.log(\"%c (3) is this file-storage channel Id? \", consoleLogStyle, this.channelId)\r\n // console.log(\"%c (4) is this file-storage channel name? \", consoleLogStyle, this.channelName)\r\n // console.log(\"%c (5) is this file-storage channel container name? \", consoleLogStyle, this.channelContainerName)\r\n // console.log(\"%c (6) is this file-storage channel GUEST ? \", consoleLogStyle, this.isGuest)\r\n // console.log(\"%c (7) is this file-storage channel OWNER ? \", consoleLogStyle, this.isOwner)\r\n // console.log(\"%c (8) is this file-storage channel CREATOR ? \", consoleLogStyle, this.isCreator)\r\n // console.log(\"%c ((a)) this is onInit call! : \", consoleLogStyle, this.formattedCurrentDateTime)\r\n }\r\n\r\n ngAfterViewInit() {\r\n // console.log(\"%c ((b)) this is AfterViewInit call! : \", consoleLogStyle, this.formattedCurrentDateTime)\r\n // if (this.isPortable && this.channelId || this.isSidebar) {\r\n // this.isDesktop = false;\r\n // } else if (!this.isPortable && this.channelId) {\r\n // // this.isDesktop = true;\r\n // this.handleScreenCheck();//might fix mobile\r\n // } else {\r\n // this.handleScreenCheck();\r\n // }\r\n // this.cdr.detectChanges();\r\n // \r\n this.componentWidthCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //add an extra check for prevideo when doing mobile\r\n if (changes.isPortable) {\r\n // console.log(\"%c is this file-storage portble? \", consoleLogStyle, this.isPortable)\r\n // this._toastService.info(changes.isPortable.currentValue);\r\n // if (changes.isPortable.currentValue && this.channelId || this.isSidebar) {\r\n // this.isDesktop = false;\r\n // } else if (!changes.isPortable.currentValue && this.channelId) {\r\n // // this.isDesktop = true;\r\n // this.handleScreenCheck();//might fix mobile\r\n // } else {\r\n // this.handleScreenCheck();\r\n // }\r\n setTimeout(() => {\r\n this.componentWidthCheck();\r\n }, 750);\r\n }\r\n // \r\n if(changes.showFiles) {\r\n if(this.showFiles) {\r\n this.componentWidthCheck();\r\n }\r\n }\r\n }\r\n\r\n // onDebouncedKeyup(event: any) {\r\n // // Your logic here, e.g., call the _getUsersBySearchQuery method with the event value\r\n // // this._getUsersBySearchQuery(event.target.value);\r\n // alert(\"CLICK\");\r\n // this._getUsersBySearchQuery(this.selectedFile.chatRoomChatUsers.allChannelUsers);\r\n // }\r\n\r\n componentWidthCheck() {\r\n let resizedEl: HTMLElement = document.getElementById(`resizeEl-${this.componentId}`);\r\n if(resizedEl) {\r\n let width = resizedEl.offsetWidth;\r\n if(width < 1024) {\r\n this.isDesktop = false;\r\n // console.info(\"%c file storage component width check : \", consoleLogStyle, width)\r\n // console.info(\"%c file storage component is desktop view? \", consoleLogStyle, this.isDesktop)\r\n if(this.fileStorageUsage) this.setStorageUsage();\r\n } else {\r\n this.isDesktop = true;\r\n // console.info(\"%c file storage component width check : \", consoleLogStyle, width)\r\n // console.info(\"%c file storage component is desktop view? \", consoleLogStyle, this.isDesktop)\r\n if(this.fileStorageUsage) this.setStorageUsage();\r\n }\r\n } else {\r\n // console.info(\"%c file storage component width check, NO resize el yet... \", consoleLogStyle)\r\n }\r\n }\r\n\r\n // handleScreenCheck() {\r\n // // 🚧🚧 testing here getting screen check from service ... \r\n // // this makes it so in channel pre-join will show desktop table view if room ... \r\n // // this.isDesktop = this._channelService._isDesktop;\r\n // // this.isDesktop = ScreenCheck(900); // 🚧 new tablet fix ... NEED TO CHECK IN CHANNEL TABLET!!!\r\n // console.log(\"%c ✨ Window resized file-store, is desktop(900) ? = \", consoleLogStyle, this.isDesktop);\r\n // }\r\n\r\n ngOnDestroy() {\r\n clearInterval(this.setCurrentDateTime);\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n // console.log(\"%c On destroy? \", consoleLogStyle)\r\n }\r\n\r\n triggerSearch(event: any) {\r\n const searchQuery = (event.target as HTMLInputElement).value;\r\n this.searchSubject.next(searchQuery);\r\n }\r\n\r\n _getChannelUser() {\r\n this._auth.getChannelUserInfo()\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n console.log(\"getchanneluser file store\", data);\r\n this.userInfo = data.body;\r\n if(this.userInfo.isGuest && this.componentId === 'file-home') this._guest.routeToChannelInvited();\r\n this.userId = this.userInfo.channelUserId;\r\n this.containerName = this.userInfo.channelUserId;\r\n this.channelId ? this.showChannelFiles() : this.showYourFiles();\r\n } else {\r\n this._toastService.error('There was an error getting user info.')\r\n }\r\n });\r\n }\r\n\r\n // 🚧 add/remove shared folder owner\r\n toggleAddOwnerModal() {\r\n this.displayAddOwnerModal = (this.displayAddOwnerModal) ? false : true;\r\n this.clearSearch();\r\n\r\n // refresh folder list when closing modal\r\n if (this.displayAddOwnerModal == false)\r\n this._resetFileList();\r\n }\r\n\r\n dtoggleAddOwnerModal() {\r\n this.displayAddOwnerModal = (this.displayAddOwnerModal) ? false : true;\r\n this.displayAddOwnerModal = (this.displayAddOwnerModal) ? false : true;\r\n this.clearSearch();\r\n }\r\n\r\n // 🚧 add/remove shared folder member\r\n toggleAddMemberModal() {\r\n this.displayAddOwnerModal = (this.displayAddOwnerModal) ? false : true;\r\n this.clearSearch();\r\n }\r\n\r\n // GET ALL USERS HERE 🎁 \r\n _getUsersBySearchQuery(currentList: any[]) { // CALLED (keyup) of searchbar input\r\n const userSearchBar = document.getElementById('user-search');\r\n let searchString = userSearchBar.value.replace(/\\s/g, '');\r\n if (searchString.length < 1) {\r\n this.searchUsersList = [];\r\n } else {\r\n this._apiCallsService.getChannelUsersByTenantAndSearchQuery(this.userInfo.tenant, searchString)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let searchList = data.body;\r\n ///console.log(\"FULL USER LIST SEARCH!!: \" +JSON.stringify(searchList));\r\n let newList = [];\r\n // Filter users from allChannelUsers that are in sharedFolderOwners or sharedFolderMembers\r\n const filteredUsers = searchList.filter((user: any) => {\r\n // Check if user is in sharedFolderOwners or sharedFolderMembers\r\n const isInOwners = this.selectedFile.sharedFolderOwners.some((owner: any) => owner.channelUserId === user.channelUserId);\r\n const isInMembers = this.selectedFile.sharedFolderMembers.some((member: any) => member.channelUserId === user.channelUserId);\r\n \r\n // Include the user in the filtered list if they are in sharedFolderOwners or sharedFolderMembers\r\n return isInOwners || isInMembers;\r\n });\r\n \r\n // Get the list of users in allChannelUsers that are not in filteredUsers\r\n const unfilteredUsers = searchList.filter((user: any) => !filteredUsers.includes(user));\r\n // console.log(\"unFILTERED USERS222: \" + JSON.stringify(unfilteredUsers));\r\n // console.log(\"FILTERED USERS222: \" + JSON.stringify(filteredUsers));\r\n //let compareList = currentList.concat(this.selectedFileFolderOwners);\r\n // console.log(\"(search)✔ current list passed:\", currentList, \"this saved owners list:\", this.selectedFaxFolderOwners)\r\n // make sure not already: owner | shared | you, in search list \r\n \r\n /*\r\n searchList.forEach((searchUser, index) => {\r\n if (this.userId !== searchUser.channelUserId) {\r\n // if (!compareList.some(owner => searchUser.channelUserId === owner.chatUserKeyNavigation.channelUserId)) {\r\n newList.push(searchList[index]);\r\n // }\r\n }\r\n });\r\n */\r\n\r\n unfilteredUsers.forEach((searchUser, index) => {\r\n if (this.userId !== searchUser.channelUserId) {\r\n // if (!compareList.some(owner => searchUser.channelUserId === owner.chatUserKeyNavigation.channelUserId)) {\r\n newList.push(unfilteredUsers[index]);\r\n // }\r\n }\r\n });\r\n this.searchUsersList = newList;\r\n // console.log(\"search res:\", this.searchUsersList)\r\n // this.searchUsersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n } else {\r\n console.error(\"error getting users by search\", JSON.stringify(data));\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n // call oninit , upload & delete && channel sig-r subs ... \r\n getStorageUsage() {\r\n // set this.fileStorageUsage here ... \r\n this._fileStorageService.getStorageUsed()\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n // console.log(\"user file usage\", data);\r\n this.fileStorageUsage = data.body;\r\n this.setStorageUsage();\r\n } else {\r\n this._toastService.error('There was an error getting user info.')\r\n }\r\n });\r\n }\r\n\r\n setStorageUsage() {\r\n if(this.channelId) {\r\n if(this.fileStorageUsage.organizationStorageSize < 0) {\r\n this.hasUnlimitedStorage = true;\r\n } else {\r\n this.showStorageBar = true;\r\n setTimeout(() => {\r\n this.colorStorageBar(this.fileStorageUsage.organizationStorageUsage,this.fileStorageUsage.organizationStorageSize);\r\n });\r\n }\r\n } else {\r\n if(this.fileStorageUsage.personalStorageSize < 0) {\r\n this.hasUnlimitedStorage = true;\r\n } else {\r\n this.showStorageBar = true;\r\n setTimeout(() => {\r\n this.colorStorageBar(this.fileStorageUsage.personalStorageUsage,this.fileStorageUsage.personalStorageSize);\r\n });\r\n }\r\n }\r\n }\r\n\r\n colorStorageBar(usedBytes: number, maxBytes: number) {\r\n // console.log(\"%c used | max \", consoleLogStyle, usedBytes, maxBytes)\r\n let storagePercent = (usedBytes / maxBytes) * 100;\r\n // let storagePercent = 26;\r\n // let storagePercent = 76;\r\n // let storagePercent = 91;\r\n // let storagePercent = 100;\r\n // console.info(\"%c color bar percent \", consoleLogStyle, storagePercent)\r\n if(storagePercent > 99) {\r\n storagePercent = 100;\r\n this.hasMaxedOutStorage = true;\r\n // this._toastService.warn(\"You have maxed out your file storage capacity.\");\r\n }\r\n this.storageBarEl.nativeElement.style.width = `${storagePercent}%`;\r\n // move to css ... use ngClass ... \r\n if(storagePercent > 99) {\r\n this.storageBarEl.nativeElement.style.backgroundColor = 'var(--new-status-red)';\r\n } else if(storagePercent > 90) {\r\n this.storageBarEl.nativeElement.style.backgroundColor = 'var(--new-status-orange)';\r\n } else if(storagePercent > 75) {\r\n this.storageBarEl.nativeElement.style.backgroundColor = 'var(--new-status-yellow)';\r\n } else {\r\n this.storageBarEl.nativeElement.style.backgroundColor = 'var(--caribbean-green)';\r\n }\r\n }\r\n\r\n storageMaxedOutWarn() {\r\n this._toastService.warn(\"You have maxed out your file storage capacity.\");\r\n }\r\n\r\n // top tabs to show Your files / Channel files \r\n showYourFiles() {\r\n // console.log(\"showing YOUR files\");\r\n this.displayYourFilesComponent = true;\r\n this.currentFolderArray = [{\r\n urlPath: '/',\r\n fileName: '/',\r\n containerName: this.userInfo.channelUserId,\r\n blodFileId: null,\r\n isFile: false\r\n }];\r\n this._callFileApi();\r\n }\r\n\r\n showChannelFiles() {\r\n // console.log(\"showing CHANNEL files\");\r\n this.displayYourFilesComponent = false;\r\n this.currentFolderArray = [{\r\n urlPath: '/',\r\n fileName: '/',\r\n containerName: this.channelContainerName,\r\n blodFileId: null,\r\n isFile: false\r\n }];\r\n this._callFileApi();\r\n }\r\n\r\n // TODO: Need to fix refresh and loading for speed and better logic\r\n _resetFileList()\r\n {\r\n \r\n if(this.currentFolderArray.length === 1)\r\n { \r\n this._fullRefreshList();\r\n }\r\n else\r\n this.filesList = this.fullFilesList;\r\n }\r\n\r\n _fullRefreshList()\r\n {\r\n this.sharedFoldersDownloaded = false; //delete?\r\n this.sharedFoldersList = [];\r\n this.sharedFoldersDownloading = false;\r\n this._refreshList();\r\n }\r\n _refreshList()\r\n {\r\n if(this.currentFolderArray.length === 1)\r\n { \r\n this.filesList = this.sharedFoldersList;\r\n this.fullFilesList = this.filesList;\r\n }\r\n else\r\n {\r\n this.filesList = [];\r\n this.fullFilesList = [];\r\n }\r\n\r\n this._callFileApi();\r\n }\r\n\r\n // called onInit to get files & pagination & refresh \r\n _callFileApi(searchTerm?: string) {\r\n //this.sharedFoldersList = [];\r\n this.isPreLoad = false;\r\n this.isFilesLoading = true;\r\n //this.selectedFile = null;\r\n \t// change folder info based on if is channel \r\n let folderInfo: any;\r\n if(this.sharedFolderSelected && this.enteredSharedFolder)\r\n {\r\n //alert(\"GETTING SHARED FOLDER FILES\");\r\n // this.sharedFolderSelected = false;\r\n \r\n /*\r\n folderInfo = {\r\n \"containerName\": \"C245A2DA-AD20-441F-9DFD-06C74C2DF04D\",\r\n //\"containerName\": this.channelContainerName,\r\n //\"parentId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"pageSize\": 20,\r\n \"orderBy\": \"isFile, fileName\",\r\n \"chatRoomId\": \"P8DRoK12L\",\r\n }; //WORKING FOR this channel */\r\n \r\n //console.log(\"files list 137: \" + this.filesList);\r\n //console.log(\"selectedfile index 137: \" + this.selectedFileIdx);\r\n //console.log(\"this.selectedFile137: \" + JSON.stringify(this.selectedFile));\r\n folderInfo = {\r\n //\"containerName\": this.filesList[this.selectedFileIdx].blobFileId,\r\n \"containerName\": this.selectedFile.blobFileId,\r\n //\"parentId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"pageSize\": 20,\r\n \"orderBy\": \"isFile, fileName\",\r\n //\"chatRoomId\": this.filesList[this.selectedFileIdx].chatRoomId,\r\n \"chatRoomId\": this.selectedFile.chatRoomId,\r\n //\"chatRoomId\": \"P8DRoK12L\",\r\n };\r\n\r\n this.selectedFileIdx = 0;\r\n \r\n //console.log(\"Shared FOLDER INFO: \" +JSON.stringify(folderInfo));\r\n\r\n //{\"containerName\":\"c245a2da-ad20-441f-9dfd-06c74c2df04d\",\"pageSize\":20,\"orderBy\":\"isFile, fileName\",\"chatRoomId\":\"P8DRoK12L\"}\r\n }\r\n else if(this.displayYourFilesComponent) {\r\n // console.log(\"%c getting YOUR files \", consoleLogStyle)\r\n //alert(\"GETTING YOUR FILES\");\r\n folderInfo = {\r\n \"containerName\": this.containerName,\r\n \"parentId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"pageSize\": 20,\r\n \"orderBy\": \"isFile, fileName\",\r\n };\r\n } \r\n else {\r\n // if channel files \r\n // console.log(\"%c getting CHANNEL files \", consoleLogStyle)\r\n //alert(\"GETTING CHANNEL FILES\");\r\n folderInfo = {\r\n \"containerName\": this.channelContainerName,\r\n \"parentId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"pageSize\": 20,\r\n \"orderBy\": \"isFile, fileName\",\r\n \"chatRoomId\": this.channelId,\r\n };\r\n //console.log(\"CHANNEL FOLDER INFO: \" +JSON.stringify(folderInfo));\r\n\r\n // if(this.sharedFolderSelected){\r\n // folderInfo[\"parentId\"] = null;\r\n // }\r\n }\r\n\r\n //this.selectedFile = null; ////CG\r\n \r\n \t// if is searching \r\n if (searchTerm) {\r\n folderInfo.fileName = searchTerm;\r\n // console.log(\"searching for:\", searchTerm);\r\n };\r\n\r\n if(!this.displayYourFilesComponent){\r\n // this.filesList = [];\r\n this._fileStorageService.getFiles(folderInfo)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.filesList = data.body;\r\n this.fullFilesList = data.body;\r\n this.fileListPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n this.isFilesLoading = false;\r\n // console.log(\"%c THIS.filesList: \", consoleLogStyle, this.filesList);\r\n // console.log(\"THIS.filesListPagination:\", this.fileListPagination);\r\n this.scrollTopBlock = false;\r\n } else {\r\n this.isFilesLoading = false;\r\n this._toastService.error(\"There was an error in getting files.\");\r\n console.error(\"Error getting files ?\", data);\r\n }\r\n });\r\n }\r\n else{\r\n // this.filesList = [];\r\n this._fileStorageService.getFiles(folderInfo)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // this.filesList = data.body;\r\n this.personalFilesList = data.body;\r\n this.fullFilesList = data.body;\r\n this.fileListPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n \r\n //TODO: have this called when selecting a Shared Folders tab! ////CG\r\n //shared folders only on the main/top folder\r\n if(!this.sharedFoldersDownloading && this.currentFolderArray.length === 1 \r\n && (this.sharedFoldersList === undefined || this.sharedFoldersList.length === 0)) {\r\n //alert(\"checking for shared folders in files tab\");\r\n this.sharedFoldersDownloading = true;\r\n //this.checkForSharedFolderProject(this.personalFilesList);\r\n \r\n //this.checkForSharedFolderProject2(this.personalFilesList);\r\n\r\n this.checkForSharedFolderProject3(this.personalFilesList);\r\n }\r\n else if (this.currentFolderArray.length === 1)\r\n {\r\n this.isFilesLoading = false;\r\n this.filesList = this.sharedFoldersList.concat(this.personalFilesList);\r\n }\r\n else{\r\n this.isFilesLoading = false;\r\n this.filesList = this.fullFilesList;\r\n }\r\n // console.log(\"%c THIS.filesList: \", consoleLogStyle, this.filesList);\r\n // console.log(\"THIS.filesListPagination:\", this.fileListPagination);\r\n this.scrollTopBlock = false;\r\n } else {\r\n this.isFilesLoading = false;\r\n this._toastService.error(\"There was an error in getting files.\");\r\n console.error(\"Error getting files ?\", data);\r\n }\r\n });\r\n this.sharedFoldersDownloaded = true;\r\n \r\n }\r\n }\r\n\r\n //for faster search\r\n _filterFiles(searchTerm?: string)\r\n {\r\n this.filesList = this._filterItems(searchTerm);\r\n }\r\n\r\n _filterItems(searchText: string): any[] {\r\n const filteredItems = this.fullFilesList.filter(item =>\r\n item.fileName.toLowerCase().includes(searchText.toLowerCase())\r\n );\r\n //console.log(\"filteredItems: \"+ JSON.stringify(filteredItems));\r\n return filteredItems;\r\n }\r\n\r\n _getFilesPagination() {\r\n this.isGettingNextPage = true;\r\n let folderInfo: any;\r\n // console.log('%c Show getting more files = ', consoleLogStyle, this.isGettingNextPage, this.currentDateTime);\r\n if(this.displayYourFilesComponent) {\r\n folderInfo = {\r\n \"containerName\": this.containerName,\r\n \"parentId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"orderBy\": \"IsFile, FileName\",\r\n \"pageNumber\": this.fileListPagination.currentPage + 1,\r\n \"pageSize\": 20\r\n };\r\n } else {\r\n folderInfo = {\r\n \"containerName\": this.channelContainerName,\r\n \"parentId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"orderBy\": \"IsFile, FileName\",\r\n \"pageNumber\": this.fileListPagination.currentPage + 1,\r\n \"chatRoomId\": this.channelId,\r\n \"pageSize\": 20\r\n };\r\n }\r\n this._fileStorageService.getFiles(folderInfo)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let list: any = data.body;\r\n this.filesList = this.filesList.concat(list);\r\n this.fullFilesList = this.filesList;\r\n // console.log(\"THIS.filesList:\", this.filesList);\r\n this.fileListPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n this.scrollTopBlock = false;\r\n setTimeout(() => {\r\n this.isGettingNextPage = false;\r\n // console.log('%c Show getting more files = ', consoleLogStyle, this.isGettingNextPage, this.currentDateTime);\r\n });\r\n } else {\r\n console.error(\"Error in pagination ?\", data);\r\n this._toastService.error(\"There was an error in getting more files.\");\r\n this.isGettingNextPage = false;\r\n }\r\n });\r\n }\r\n // end get files & pagination \r\n\r\n scrollCheck() {\r\n let scrollBox: any = document.querySelector(`#fileScrollbox-${this.componentId}`);\r\n let boxHeight = scrollBox.scrollHeight - scrollBox.offsetHeight;\r\n let boxTop = Math.ceil(scrollBox.scrollTop);\r\n \r\n if (!this.scrollTopBlock && boxTop >= boxHeight && this.fileListPagination.nextPageLink) {\r\n // console.log(\"scroll top: \" + boxTop);\r\n // console.log(\"box height: \" + boxHeight);\r\n this.scrollTopBlock = true;\r\n this._getFilesPagination();\r\n }\r\n }\r\n\r\n goBack() {\r\n\r\n \r\n this.currentFolderArray.pop();\r\n\r\n // makes the last folder/file the new selected file if not at the top of the file list\r\n if(this.currentFolderArray.length > 0)\r\n this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n //alert(\"this.currentFolderArray AFTER POP: \" + JSON.stringify(this.currentFolderArray));\r\n //alert(\"this.currentFolderArray: \" + JSON.stringify(this.currentFolderArray[this.currentFolderArray.length-1]));\r\n //console.log(\"SEARCHING FOR HOPE: this.currentFolderArray: \" + JSON.stringify(this.currentFolderArray[this.currentFolderArray.length-1]));\r\n //console.log(\"SEARCHING FOR MORE HOPE: \" + JSON.stringify(this.currentFolderArray[this.currentFolderArray.length-1].rev));\r\n\r\n //if you go back to a parent Shared Folder \r\n if(this.currentFolderArray[this.currentFolderArray.length-1].rev != null ){\r\n //alert(\"I AM HERE!!!!\");\r\n this.enteredSharedFolder = true;\r\n this.sharedFolderSelected = true;\r\n }\r\n //if the folder isn't a shared folder, reset the flags\r\n else{\r\n this.enteredSharedFolder = false;\r\n this.sharedFolderSelected = false;\r\n this.restrictSharedFolderActions = false;\r\n }\r\n \r\n\r\n //When you go back to the home/main file path, need to \r\n // if(this.currentFolderArray.urlPath = \"/\"){\r\n // //this.enteredSharedFolder = false;\r\n // //this.sharedFolderSelected = false;\r\n // this.selectedFile = null;\r\n // }\r\n\r\n //alert(\"WHERE YOU ARE\" + JSON.stringify(this.currentFolderArray));\r\n\r\n this._refreshList(); //use instead?? ////CG\r\n //this._fullRefreshList();\r\n\r\n //this._callFileApi();\r\n this.selectedFile = null;\r\n \r\n\r\n // console.log(\"back-clicked, this.currentFolderArray = \", this.currentFolderArray);\r\n }\r\n\r\n // search start \r\n showSearchFilesInput() {\r\n // console.log(\"search bar open ?\", this.displaySearchFilesInput);\r\n if(this.displaySearchFilesInput && !this.isSearching) {\r\n this.displaySearchFilesInput = false;\r\n if (this.isSearching && this.filesList.length === 0) {\r\n this.isSearching = false;\r\n this._callFileApi();\r\n }\r\n } else {\r\n this.displaySearchFilesInput = true;\r\n this.selectedFile = null;\r\n }\r\n // console.log(\"search bar open ?\", this.displaySearchFilesInput);\r\n }\r\n\r\n searchFiles(e: any) {\r\n let expression = /^\\S*$/;\r\n let regex = new RegExp(expression);\r\n if (e.target.value.match(regex)) {\r\n if (e.target.value && e.target.value !== \"\") {\r\n //this._callFileApi(e.target.value);\r\n this._filterFiles(e.target.value);\r\n this.isSearching = true;\r\n // console.log(\"active file search for: orig target ?\", e.originalTarget.value);\r\n // console.log(\"active file search for: TARGET ?\", e.target.value); - same as above \r\n } else {\r\n this._callFileApi();\r\n this.isSearching = false;\r\n }\r\n }\r\n }\r\n\r\n clearSearch() {\r\n //this.sharedFoldersList = [];\r\n const searchInput: any = document.getElementById(`searchInput-${this.componentId}`);\r\n // const searchClose: any = document.getElementById('searchClose');\r\n if (this.isSearching || searchInput) {\r\n searchInput.value = \"\";\r\n this.isSearching = false;\r\n //this._callFileApi();\r\n this.filesList = this.fullFilesList;\r\n }\r\n }\r\n\r\n clearUserSearch() {\r\n //this.sharedFoldersList = [];\r\n const searchInput: any = document.getElementById('user-search');\r\n if (this.isSearching || searchInput) {\r\n searchInput.value = \"\";\r\n this.isSearching = false;\r\n this.searchUsersList = [];\r\n //this.filesList = this.fullFilesList;\r\n }\r\n }\r\n\r\n searchCheckLength() {\r\n const userSearchBar = document.getElementById('user-search');\r\n if (userSearchBar) {\r\n if (userSearchBar.value.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n // search end \r\n\r\n // // TODO implement sorting \r\n // sortFiles(e: any) {\r\n // console.log(\"sort files . . .\", e);\r\n // // this.filesList = this.filesList.reverse();\r\n // }\r\n\r\n // select file & info \r\n selectFile(i: number) {\r\n //console.log(\"%c file selected \", this.filesList[i])\r\n this.selectedFileIdx = i;\r\n // console.log(\"%c item already selected! \", consoleLogStyle); <- if IS selected line 345 returns;\r\n if(!this.isDownloading && !this.isRenameSubmitting && !this.isDeleting) {\r\n if (this.selectedFile && this.selectedFile === this.filesList[i]) return;\r\n // to close folder form on select \r\n if (this.displayCreateFolderForm) this.displayCreateFolderForm = false;\r\n if (this.displayRenameFileForm) this.displayRenameFileForm = false;\r\n // to close mobile infos on select \r\n const allOtherInfos = Array.from(document.getElementsByClassName('file-info-display') as HTMLCollectionOf);\r\n // console.log(\"%c All other infos \", consoleLogStyle, allOtherInfos);\r\n allOtherInfos.forEach(info => info.style.display = 'none');\r\n\r\n if(this.filesList[i].rev) { \r\n this.sharedFolderSelected = true;\r\n }\r\n else\r\n this.sharedFolderSelected = false;\r\n\r\n this.isSharedFolderCreator = this.sharedFolderSelected && (this.filesList[i].chatUserId == this.userInfo.channelUserId) ;\r\n\r\n this.selectedFile = this.filesList[i];\r\n this.isSharedFolderMember = false;\r\n //see if current user is a member only of the shared folder, if a shared folder is selected:\r\n //TODO: indicate Shared Folder selected here?\r\n if(this.selectedFile.rev){\r\n this.isSharedFolderMember = this.checkIfOnlyASharedFolderMember(this.userInfo, this.selectedFile.sharedFolderMembers);\r\n console.log(\"IS MEMBER ONLY: \" + this.isSharedFolderMember);\r\n }\r\n\r\n //this.buildFilteredUserList(this.selectedFile);\r\n //console.log(\"FULL FOLDER DATA: \" + JSON.stringify(this.selectedFile));\r\n //console.log(\"%c Item selected: \", consoleLogStyle, this.selectedFile, i);\r\n //console.log(\"this.currentFolderArray: \" + JSON.stringify(this.currentFolderArray));\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n // double click item - \r\n openFolder(isFile: boolean, ownersList: ChannelCard) {\r\n //console.log(\"OPENED FOLDER!: \" + JSON.stringify(this.selectFile));\r\n this.restrictSharedFolderActions = false;\r\n //TODO: fix logic here, a bit messy\r\n if(!this.isDownloading && !this.isRenameSubmitting && !this.isDeleting) {\r\n if (isFile) {\r\n this.downloadFile();\r\n // console.log(\"file downloaded\");\r\n } else {\r\n this.currentFolderArray.push(this.selectedFile);\r\n this.selectedFileFolderOwners = ownersList;\r\n if(this.sharedFolderSelected)\r\n {\r\n this.enteredSharedFolder = true;\r\n if(this.isSharedFolderMember)\r\n {\r\n this.restrictSharedFolderActions = true;\r\n }\r\n else\r\n this.restrictSharedFolderActions = false;\r\n }\r\n else \r\n this.enteredSharedFolder = false;\r\n this._refreshList();\r\n //this._callFileApi();\r\n this.selectedFile = null;\r\n }\r\n } else {\r\n return;\r\n }\r\n // console.log(\"\");\r\n }\r\n\r\n // take this event bubbling...\r\n preventFileDblClick(e: Event) {\r\n e.stopPropagation();\r\n }\r\n\r\n addOwner(userId: string, username: string) {\r\n this.clearSearch();\r\n //console.log(\"adding owner:\", userId, username)\r\n //console.log(\"to folder/file: \", this.selectedFile)\r\n this.isAddingOwnerMember = true; // TODO: add loading spinner to modal <---<<<|)\r\n let owner = {\r\n \"channelUserId\": userId,\r\n //\"channelId\": this.selectedFile.chatRoomId\r\n \"channelId\": this.selectedFile.rev\r\n };\r\n this._apiCallsService.postChannelOwner(owner)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Owner Added\");\r\n this.isAddingOwnerMember = false;\r\n this._toastService.success(`${username} added as an owner.`);\r\n //this._getChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n //_getChannelFolderData();\r\n // this._resetChannelFolderData(this.selectedFile.rev);\r\n //this._resetChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n //this._resetChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n this._resetChannelFolderData(this.selectedFile);\r\n //this._fullRefreshList();\r\n //Slow\r\n // this.getFaxAccounts(); ////CG\r\n } else if (res.status === 409) {\r\n // console.log(\"Owner Already Exists\");\r\n this.isAddingOwnerMember = false;\r\n this._toastService.error(`${username} is already an owner.`);\r\n } else {\r\n // console.log(\"error adding owner to fax:\", res);\r\n this.isAddingOwnerMember = false;\r\n this._toastService.error(`There was an error adding ${username} as an owner.`);\r\n }\r\n });\r\n }\r\n\r\n resetSelectedFile() {\r\n this.selectedFile = null;\r\n this.selectedFileIdx = null;\r\n }\r\n\r\n removeOwner(userId: string, username: string) {\r\n this.clearSearch();\r\n // console.log(\"removing owner:\", userId, username)\r\n this.isRemovingOwnerMember = true; // TODO: add loading spinner to modal <---<<<|)\r\n let owner = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.selectedFile.chatRoomId\r\n };\r\n this._apiCallsService.deleteChannelOwner(owner)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"Owner Removed\");\r\n this.isRemovingOwnerMember = false;\r\n this._toastService.success(`${username} has been removed as owner.`);\r\n \r\n //resets folder data?\r\n //this._getChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n //this._resetChannelFolderData(this.selectedFile.rev);\r\n //this._resetChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n this._resetChannelFolderData(this.selectedFile);\r\n //this._fullRefreshList(); //SLOW\r\n //this.dtoggleAddOwnerModal();\r\n //let priorSelectedFileIndex = this.selectedFileIdx;\r\n //this.resetSelectedFile();\r\n //this._getChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[priorSelectedFileIndex]);\r\n //console.log(\"NEW selected File: \" + JSON.stringify(this.selectedFile));\r\n //this.dtoggleAddOwnerModal();\r\n //this.getFaxAccounts(); ////CG\r\n } else if (res.status === 404) {\r\n // console.log(\"Owner does not exist\");\r\n this.isRemovingOwnerMember = false;\r\n this._toastService.error(`${username} has already been removed has an owner.`);\r\n } else {\r\n // console.log(\"error removing owner:\", res);\r\n this.isRemovingOwnerMember = false;\r\n this._toastService.error(`There was an error removing ${username} as an owner.`);\r\n }\r\n });\r\n }\r\n // END add/remove Shared folder owner\r\n\r\n addMember(userId: string, username: string) {\r\n this.clearSearch();\r\n //console.log(\"adding owner:\", userId, username)\r\n //console.log(\"to folder/file: \", this.selectedFile)\r\n this.isAddingOwnerMember = true; // TODO: add loading spinner to modal <---<<<|)\r\n let member = {\r\n \"channelUserId\": userId,\r\n //\"channelId\": this.selectedFile.chatRoomId\r\n \"channelId\": this.selectedFile.rev\r\n };\r\n this._apiCallsService.postChannelMember(member)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Member Added\");\r\n //this.isAddingOwnerMember = false;\r\n this._toastService.success(`${username} added as member.`);\r\n //this._getChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n //this._resetChannelFolderData(this.selectedFile.rev);\r\n //this._resetChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n this.channelUpdated.emit();\r\n this._channelService.updateChannelUsersInRoomEvent(member.channelId);\r\n this._resetChannelFolderData(this.selectedFile);\r\n //this._fullRefreshList(); //SLOW\r\n //this.dtoggleAddOwnerModal();\r\n // this.getFaxAccounts(); ////CG\r\n } else if (res.status === 409) {\r\n // console.log(\"Owner Already Exists\");\r\n //this.isAddingOwnerMember = false;\r\n this._toastService.error(`${username} is already a member.`);\r\n } else {\r\n // console.log(\"error adding owner to fax:\", res);\r\n //this.isAddingOwnerMember = false;\r\n this._toastService.error(`There was an error adding ${username} as a member.`);\r\n }\r\n this.isAddingOwnerMember = true\r\n });\r\n }\r\n\r\n removeMember(userId: string, username: string) {\r\n this.clearSearch();\r\n console.log(\"removing member:\", userId, username)\r\n this.isRemovingOwnerMember = true; // TODO: add loading spinner to modal <---<<<|)\r\n let member = {\r\n \"channelUserId\": userId,\r\n \"channelId\": this.selectedFile.chatRoomId\r\n };\r\n console.log(\"removing member:\", JSON.stringify(member));\r\n this._apiCallsService.deleteChannelMember(member)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"Owner Removed\");\r\n this.isRemovingOwnerMember = false;\r\n this._toastService.success(`${username} has been removed as a member.`);\r\n //this._getChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n //this._resetChannelFolderData(this.selectedFile.rev);\r\n //this._resetChannelFolderData(this.projects[this.sharedFoldersProject.projectIdx].channels[this.selectedFileIdx]);\r\n this._resetChannelFolderData(this.selectedFile);\r\n //this._fullRefreshList(); //Slow\r\n //this.getFaxAccounts(); ////CG\r\n } else if (res.status === 404) {\r\n // console.log(\"Owner does not exist\");\r\n this.isRemovingOwnerMember = false;\r\n this._toastService.error(`${username} has already been removed has a member.`);\r\n } else {\r\n // console.log(\"error removing owner:\", res);\r\n this.isRemovingOwnerMember = false;\r\n this._toastService.error(`There was an error removing ${username} as a member.`);\r\n }\r\n });\r\n }\r\n // END add/remove Shared folder owner\r\n\r\n // mobile only display file info - i = File index & also id of info element \r\n showFileInfo(i: number ,e: Event) {\r\n e.stopPropagation();\r\n // console.log(\"show info\", i, e);\r\n // to close other infos \r\n const allOtherInfos = Array.from(document.getElementsByClassName('file-info-display') as HTMLCollectionOf);\r\n // console.log(\"%c All other infos \", consoleLogStyle, allOtherInfos);\r\n allOtherInfos.forEach(info => info.style.display = 'none');\r\n // open this 'i' info w/ transition \r\n const info = document.getElementById(`file-info-${i}-${this.componentId}`);\r\n info.style.display = \"flex\";\r\n info.animate([\r\n { opacity: 0, transform: 'scale(0)' },\r\n { opacity: 1, transform: 'scale(1)' }\r\n ], {\r\n duration: 172,\r\n easing: 'ease-out'\r\n });\r\n // console.log(\"file-item\", i);\r\n }\r\n\r\n // to close info when clicked itself | mouseleave 🚧🚧🚧 ... \r\n closeFileInfo(i: number, e: Event) {\r\n e.stopPropagation();\r\n // console.log(\"mouse down\", i, e);\r\n \r\n const info = document.getElementById(`file-info-${i}-${this.componentId}`);\r\n info.style.display = \"none\";\r\n }\r\n // select file & info end\r\n\r\n // possible v2.1 feat.\r\n // shareFile(e) {\r\n // console.log(\"share file:\", e);\r\n // }\r\n\r\n // copyFile(e?: Event) {\r\n // if(e)\r\n // console.log(\"copy file:\", e);\r\n // else\r\n // console.log(\"copy file, no event attached\");\r\n // }\r\n\r\n // copy file start \r\n copyFile(e?: Event) {\r\n if (e) e.stopPropagation();\r\n this.isDownloading = true;\r\n let fileInfo: any;\r\n if(this.displayYourFilesComponent && !this.enteredSharedFolder) {\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n //\"fromPath\": \"pause-button.png\",\r\n \"fromPath\": this.selectedFile.urlPath,\r\n //\"toPath\": this.currentFolderPath() + this.selectedFile.fileName + \".\" + this.selectedFile.fileName.substring(this.selectedFile.fileName.lastIndexOf(\".\") + 1 , this.selectedFile.fileName.length),\r\n \"toPath\": this.selectedFile.urlPath,\r\n //toPath\": \"/copiedFile.png\",\r\n //\"newFileName\": this.renameFileForm.value.fName + \".\" + this.selectedFile.fileName.substring(this.selectedFile.fileName.lastIndexOf(\".\") + 1 , this.selectedFile.fileName.length),\r\n \"newFileName\": \"copiedFile2.png\",\r\n \"autoRename\": true,\r\n \"blobFileId\": this.selectedFile.blobFileId\r\n }\r\n } else {\r\n\r\n if(this.enteredSharedFolder && this.channelId == null){\r\n this.channelId = this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId;\r\n }\r\n\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.channelId\r\n }\r\n }\r\n this._fileStorageService.fileCopy(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.copiedFile = res.body;\r\n //console.log(\"copy file data:\", this.copiedFile);\r\n } else {\r\n console.log(\"Error in copy ?\", res);\r\n this._toastService.error(`There was an error in copying ${this.selectedFile.fileName}.`);\r\n this.isDownloading = false;\r\n }\r\n });\r\n //console.log(\"copy file clicked:\", fileInfo);\r\n }\r\n\r\n // download file start \r\n downloadFile(e?: Event) {\r\n if (e) e.stopPropagation();\r\n this.isDownloading = true;\r\n let fileInfo: any;\r\n\r\n //shared folders are channel stroages thus the extra check\r\n if(this.displayYourFilesComponent && !this.enteredSharedFolder) {\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId\r\n }\r\n } else {\r\n\r\n //Shared folder channel Ids are found in their parent folder object\r\n if(this.enteredSharedFolder && this.channelId == null){\r\n this.channelId = this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId;\r\n }\r\n\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.channelId\r\n }\r\n }\r\n this._fileStorageService.fileDownload(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.createDownloadElement(res.body);\r\n } else {\r\n // console.log(\"Error in download ?\", res);\r\n this._toastService.error(`There was an error in downloading ${this.selectedFile.fileName}.`);\r\n this.isDownloading = false;\r\n }\r\n });\r\n // console.log(\"download file clicked:\", fileInfo);\r\n }\r\n createDownloadElement(link: any) {\r\n var element = document.createElement('a');\r\n element.setAttribute('href', link);\r\n element.setAttribute('download', link);\r\n element.setAttribute('target', '_blank');\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n this.isDownloading = false;\r\n }\r\n // download file end \r\n\r\n // delete confirm \r\n deleteConfirm(e?: Event) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n // console.log(\"is file?\", isFile)\r\n if(this.selectedFile.isFile) {\r\n this._toastService.continue(\"Are you sure you want to delete this file?\", \"deleteFileConfirm\");\r\n } else {\r\n // Shared Folders have a .rev in their data, otherwise rev is null\r\n if(this.selectedFile.rev){\r\n\r\n if(this.isSharedFolderCreator)\r\n this._toastService.continue(\"Are you sure you want to delete this Shared Folder and all contents? Data will be lost to all it is shared with.\", \"deleteSharedFolderConfirm\");\r\n else\r\n this._toastService.continue(\"Are you sure you want to remove this Shared Folder from your list?\", \"removeSharedFolderConfirm\");\r\n }\r\n //regular folder\r\n else{\r\n this._toastService.continue(\"Are you sure you want to delete this folder and all contents?\", \"deleteFolderConfirm\");\r\n }\r\n }\r\n }\r\n // delete file start \r\n _deleteFileFromAll(e?: Event) {\r\n if (e) e.stopPropagation();\r\n if (this.selectedFile === null) {\r\n // console.log(\"no file selected\");\r\n } else {\r\n this.isDeleting = true;\r\n let fileInfo: any;\r\n if(this.displayYourFilesComponent && !this.enteredSharedFolder) {\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId\r\n }\r\n } else {\r\n\r\n if(this.enteredSharedFolder && this.channelId == null){\r\n this.channelId = this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId;\r\n }\r\n\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.channelId\r\n }\r\n }\r\n this._fileStorageService.fileDelete(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n if (!this.displayYourFilesComponent) {\r\n this._channelService.sharedFileDeleteComplete(this.channelId, this.selectedFile.fileName);\r\n }\r\n\r\n //makes sure we reload into the current shared folder after renaming\r\n if(this.enteredSharedFolder){\r\n this.sharedFolderSelected = true;\r\n if(this.currentFolderArray.length > 0)\r\n this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n }\r\n\r\n this._callFileApi();\r\n this.getStorageUsage();\r\n this.isDeleting = false;\r\n this.selectedFile = null;\r\n } else {\r\n // console.log(\"Error in delete ?\", res);\r\n this._toastService.error(`There was an error in deleting ${this.selectedFile.fileName}.`);\r\n this.isDeleting = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n // v2.1 feat. \r\n // moveFile(e: any) {\r\n // console.log(\"move file:\", e);\r\n // }\r\n\r\n // rename start \r\n autoFocusRenameInput() {\r\n setTimeout(() => {\r\n const targetInput: any = document.querySelector(`#renameInput-${this.componentId}`);\r\n if (targetInput) {\r\n targetInput.focus();\r\n }\r\n });\r\n }\r\n\r\n showRenameFileInput(e?: Event) {\r\n if (e) e.stopPropagation();\r\n // this.displayRenameFileForm = (this.displayRenameFileForm) ? false : true;\r\n if(this.displayRenameFileForm) {\r\n this.displayRenameFileForm = false;\r\n this.renameFileForm.reset();\r\n } else {\r\n this.displayRenameFileForm = true;\r\n if(this.selectedFile.isFile) {\r\n let fileNameNoExt = this.selectedFile.fileName.substring(0, this.selectedFile.fileName.lastIndexOf('.'));\r\n // console.log(\"%c file name no .ext\",consoleLogStyle,fileNameNoExt)\r\n this.renameFileForm.setValue({\r\n fName: fileNameNoExt\r\n });\r\n } else {\r\n this.renameFileForm.setValue({\r\n fName: this.selectedFile.fileName.slice(0, -1),\r\n });\r\n }\r\n this.autoFocusRenameInput();\r\n }\r\n }\r\n\r\n renameFolder() {\r\n\r\n //divert to shared folder renaming if the shared folder; designated by the .rev data\r\n //console.log(\"FOR LOCKING OUT NON OWNERS: \" + JSON.stringify(this.selectedFile));\r\n if(this.selectedFile.rev != null)\r\n {\r\n this._renameSharedFolder();\r\n return;\r\n }\r\n\r\n this.isRenameSubmitting = true;\r\n let folderInfo: any;\r\n if(this.displayYourFilesComponent) {\r\n folderInfo = {\r\n \"fromPath\": this.selectedFile.urlPath,\r\n \"toPath\": this.currentFolderPath() + this.renameFileForm.value.fName.trim() + \"/\",\r\n \"newFolderName\": this.renameFileForm.value.fName.trim() + \"/\",\r\n \"autoRename\": false,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n };\r\n } else {\r\n folderInfo = {\r\n \"fromPath\": this.selectedFile.urlPath,\r\n \"toPath\": this.currentFolderPath() + this.renameFileForm.value.fName.trim() + \"/\",\r\n \"newFolderName\": this.renameFileForm.value.fName.trim() + \"/\",\r\n \"autoRename\": false,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.channelId,\r\n };\r\n }\r\n if (this.renameFileForm.value.fName !== \"\" && this.renameFileForm.value.fName.trim() !== null && this.renameFileForm.value.fName.trim() !== this.selectedFile.fileName.trim().slice(0, -1)) {\r\n this._fileStorageService.renameFolder(folderInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"resolved rename folder?:\", res)\r\n this._callFileApi();\r\n this.selectedFile = null;\r\n this.isRenameSubmitting = false;\r\n this.renameFileForm.reset();\r\n this.displayRenameFileForm = false;\r\n } else if (res.status === 400) {\r\n // console.log(\"%c Name Error \", consoleLogStyle);\r\n this._toastService.error(\"Folder name must contain letters and numbers.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else if (res.status === 409) {\r\n // console.log(\"%c Duplicate Error: \", consoleLogStyle);\r\n this._toastService.error(`${folderInfo.newFolderName.trim().slice(0, -1)} already exists.`);\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else {\r\n // console.log(\"Something went wrong with rename folder\", res.status.toString());\r\n this.isRenameSubmitting = false;\r\n this.displayRenameFileForm = false;\r\n this._toastService.error(\"Something went wrong with rename folder.\");\r\n }\r\n });\r\n } else {\r\n this._toastService.error(\"Must edit folder name to submit.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n }\r\n }\r\n\r\n renameFile() {\r\n this.isRenameSubmitting = true;\r\n let fileInfo: any;\r\n if(this.displayYourFilesComponent && !this.enteredSharedFolder) {\r\n //alert(\"SENDING REGULAR FILE INFO IN RENAME\");\r\n fileInfo = {\r\n \"fromPath\": this.selectedFile.urlPath,\r\n \"toPath\": this.currentFolderPath() + this.renameFileForm.value.fName.trim() + \".\" + this.selectedFile.fileName.trim().substring(this.selectedFile.fileName.trim().lastIndexOf(\".\") + 1 , this.selectedFile.fileName.trim().length),\r\n \"newFileName\": this.renameFileForm.value.fName.trim() + \".\" + this.selectedFile.fileName.trim().substring(this.selectedFile.fileName.lastIndexOf(\".\") + 1 , this.selectedFile.fileName.trim().length),\r\n \"autoRename\": false,\r\n \"blobFileId\": this.selectedFile.blobFileId\r\n };\r\n } else {\r\n // alert(\"RENAMING CHANNEL FILES?\");\r\n //alert(\"this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId:\" + this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId);\r\n \r\n let toPathString = this.currentFolderPath() + this.renameFileForm.value.fName.trim() + \".\" + this.selectedFile.fileName.trim().substring(this.selectedFile.fileName.trim().lastIndexOf(\".\") + 1 , this.selectedFile.fileName.trim().length);\r\n //Shared folder channel Ids are found in their parent folder object\r\n if(this.enteredSharedFolder){\r\n //alert(\"RENAMING SHARED FILES\");\r\n this.channelId = this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId;\r\n //NEED TO TEST NESTED FOLDER SITUATIONS! ////CG\r\n toPathString = \"/\" + this.renameFileForm.value.fName.trim() + \".\" + this.selectedFile.fileName.trim().substring(this.selectedFile.fileName.trim().lastIndexOf(\".\") + 1 , this.selectedFile.fileName.trim().length);\r\n }\r\n \r\n fileInfo = {\r\n \"fromPath\": this.selectedFile.urlPath,\r\n \"toPath\": toPathString,\r\n \"newFileName\": this.renameFileForm.value.fName.trim() + \".\" + this.selectedFile.fileName.trim().substring(this.selectedFile.fileName.trim().lastIndexOf(\".\") + 1 , this.selectedFile.fileName.trim().length),\r\n \"autoRename\": false,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.channelId,\r\n };\r\n }\r\n\r\n //console.log(\"RENAME DEBUGGING:\");\r\n //console.log(\"Rename FileInfo Passed: \" + JSON.stringify(fileInfo));\r\n //console.log(\"Rename this.selectedfile: \" + JSON.stringify(this.selectedFile));\r\n\r\n if (this.renameFileForm.value.fName.trim() !== \"\" && this.renameFileForm.value.fName.trim() !== null && this.renameFileForm.value.fName.trim() !== this.selectedFile.fileName.trim().substring(0, this.selectedFile.fileName.trim().lastIndexOf(\".\"))) {\r\n this._fileStorageService.renameFile(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"resolved rename folder?:\", res)\r\n\r\n //makes sure we reload into the current shared folder after renaming\r\n if(this.enteredSharedFolder){\r\n this.sharedFolderSelected = true;\r\n if(this.currentFolderArray.length > 0)\r\n this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n }\r\n \r\n this._callFileApi();\r\n //this.selectedFile = null;\r\n this.isRenameSubmitting = false;\r\n this.renameFileForm.reset();\r\n this.displayRenameFileForm = false;\r\n //this._fullRefreshList();\r\n } else if (res.status === 400) {\r\n // console.log(\"%c Name Error \", consoleLogStyle);\r\n this._toastService.error(\"File name must contain letters and numbers.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else if (res.status === 409) {\r\n // console.log(\"%c Duplicate Error: \", consoleLogStyle);\r\n this._toastService.error(`${fileInfo.newFileName.slice(0, -1)} already exists.`);\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else {\r\n // console.log(\"something went wrong with rename\", res.status.toString());\r\n this._toastService.error(\"Something went wrong with rename.\");\r\n this.isRenameSubmitting = false;\r\n this.displayRenameFileForm = false;\r\n }\r\n });\r\n } else {\r\n // console.log(\"%c Must edit name to submit! \", consoleLogStyle)\r\n this._toastService.error(\"Must edit file name to submit.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n }\r\n }\r\n // rename end \r\n\r\n // create a folder start \r\n autoFocusCreateFolderInput() {\r\n setTimeout(() => {\r\n const targetInput: any = document.querySelector(`#createFolderInput-${this.componentId}`);\r\n if (targetInput) {\r\n targetInput.focus();\r\n }\r\n });\r\n }\r\n\r\n showCreateFolderForm() {\r\n this.displayCreateFolderForm = (this.displayCreateFolderForm) ? false : true;\r\n this.selectedFile = null;\r\n this.newFolder.reset();\r\n this.autoFocusCreateFolderInput();\r\n // console.log(\"%c Show create folder form? \", consoleLogStyle, this.displayCreateFolderForm);\r\n }\r\n\r\n createForm() {\r\n this.newFolder = this.formBuilder.group({\r\n fName: ['', [Validators.required]]\r\n });\r\n this.renameFileForm = this.formBuilder.group({\r\n fName: ['', [Validators.required]]\r\n });\r\n }\r\n\r\n // get newFolderControls() { return this.newFolder.controls; }\r\n\r\n // dont use this in template ... no unbound funcs in template ... \r\n currentFolderPath() {\r\n // console.log(\"%c is this being over called curr folder path? ... \", consoleLogStyle)\r\n return this.currentFolderArray[this.currentFolderArray.length - 1].urlPath;\r\n }\r\n\r\n // fix here add if displayYourFiles \r\n _createFolder() {\r\n this.isFolderSubmitting = true;\r\n let folderInfo: any;\r\n\r\n //console.log(\"%c Folder is submitting? \", consoleLogStyle, this.isFolderSubmitting);\r\n if(this.displayYourFilesComponent) {\r\n folderInfo = {\r\n \"containerName\": this.containerName,\r\n \"path\": this.currentFolderPath() + this.newFolder.value.fName.trim() + \"/\",\r\n \"folderName\": this.newFolder.value.fName.trim() + \"/\",\r\n \"autoRename\": false,\r\n \"parentBlobFileId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId\r\n };\r\n } else {\r\n folderInfo = {\r\n \"containerName\": this.channelContainerName,\r\n \"path\": this.currentFolderPath() + this.newFolder.value.fName.trim() + \"/\",\r\n \"folderName\": this.newFolder.value.fName.trim() + \"/\",\r\n \"autoRename\": false,\r\n \"parentBlobFileId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"channelId\": this.channelId,\r\n };\r\n }\r\n \r\n this._fileStorageService.createFolder(folderInfo)\r\n .subscribe(res => {\r\n // console.log(\"%c Folder status \", consoleLogStyle, res);\r\n if (res.status === 200) {\r\n this._callFileApi();\r\n this.isFolderSubmitting = false;\r\n this.newFolder.reset();\r\n //console.log(\"%c New Folder Data \", consoleLogStyle, this.newFolder);\r\n this.displayCreateFolderForm = false;\r\n } else if (res.status === 400) {\r\n // console.log(\"%c Folder name Error \", consoleLogStyle, res);\r\n this._toastService.error(\"Folder name must contain letters and numbers.\");\r\n this.isFolderSubmitting = false;\r\n this.newFolder.reset();\r\n this.displayCreateFolderForm = true;\r\n this.autoFocusCreateFolderInput();\r\n // console.log(\"%c Show create folder form? \", consoleLogStyle, this.displayCreateFolderForm);\r\n } else if (res.status === 409) {\r\n // console.log(\"%c Duplicate folder Error: \", consoleLogStyle, res);\r\n this._toastService.error(`${folderInfo.folderName.slice(0, -1)} already exists.`);\r\n this.isFolderSubmitting = false;\r\n this.newFolder.reset();\r\n this.displayCreateFolderForm = true;\r\n this.autoFocusCreateFolderInput();\r\n // console.log(\"%c Show create folder form? \", consoleLogStyle, this.displayCreateFolderForm);\r\n } else {\r\n // console.log(\"something went wrong with CREATE_FOLDER\", res.status.toString());\r\n this.isFolderSubmitting = false;\r\n this.displayCreateFolderForm = false;\r\n this._toastService.error(\"Something went wrong with create folder.\");\r\n }\r\n });\r\n \r\n }\r\n\r\n _createSharedFolder() {\r\n this.isFolderSubmitting = true;\r\n \r\n //console.log(\"this.sharedFoldersProject.projectFound: \" + this.sharedFoldersProject);\r\n if(this.sharedFoldersProject && this.sharedFoldersProject.projectFound != null) {\r\n this.createSharedFolderChannel(this.sharedFoldersProject.projectFound.teamProjectId,\r\n this.sharedFoldersProject.projectFound,this.newFolder.value.fName.trim()); \r\n }\r\n else{\r\n this.createSharedFolderProject(this.newFolder.value.fName.trim());\r\n }\r\n }\r\n\r\n _createSharedFolder2() {\r\n this.isFolderSubmitting = true;\r\n \r\n if(this.sharedFolderProject && this.sharedFolderProjectExists) {\r\n this.createSharedFolderChannel(this.sharedFolderProject.teamProjectId,\r\n this.sharedFolderProject,this.newFolder.value.fName.trim()); \r\n }\r\n else{\r\n this.createSharedFolderProject(this.newFolder.value.fName.trim());\r\n }\r\n }\r\n\r\n _renameSharedFolder() {\r\n this.isRenameSubmitting = true;\r\n if (this.renameFileForm.value.fName !== \"\" && this.renameFileForm.value.fName.trim() !== null && this.renameFileForm.value.fName.trim() !== this.selectedFile.fileName.trim().slice(0, -1)) {\r\n\r\n let patch = {\r\n \"op\": \"replace\",\r\n \"path\": \"/Name\",\r\n \"value\": this.renameFileForm.value.fName.trim()\r\n };\r\n this._fileStorageService.renameSharedFolder(this.selectedFile.chatRoomId,patch)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n //console.log(\"resolved rename shared folder?:\", res)\r\n //this.sharedFoldersList = []; //reset shared folder list\r\n if(this.selectedFile == null && this.currentFolderArray.length > 0)\r\n this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n //this._callFileApi();\r\n //this.selectedFile = null;\r\n this.sharedFolderSelected = false;\r\n this.isRenameSubmitting = false;\r\n this.renameFileForm.reset();\r\n this.displayRenameFileForm = false;\r\n this._fullRefreshList();\r\n } else if (res.status === 400) {\r\n // console.log(\"%c Name Error \", consoleLogStyle);\r\n this._toastService.error(\"Folder name must contain letters and numbers.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else if (res.status === 409) {\r\n // console.log(\"%c Duplicate Error: \", consoleLogStyle);\r\n this._toastService.error(`${this.renameFileForm.value.fName.trim()} already exists.`);\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n } else {\r\n console.log(\"Something went wrong with rename shared folder\", res.status.toString());\r\n this.isRenameSubmitting = false;\r\n this.displayRenameFileForm = false;\r\n this._toastService.error(\"Something went wrong with rename folder.\");\r\n }\r\n });\r\n } else {\r\n this._toastService.error(\"Must edit folder name to submit.\");\r\n this.isRenameSubmitting = false;\r\n this.autoFocusRenameInput();\r\n }\r\n }\r\n \r\n /*\r\n _renameSharedFolders(e?: Event){\r\n if (e) e.stopPropagation();\r\n if (this.selectedFile === null) {\r\n // console.log(\"no file selected\");\r\n } \r\n else{\r\n let patch = {\r\n \"Name\": this.selectedFile.fileName\r\n };\r\n this._fileStorageService.renameSharedFolder(this.selectedFile.chatRoomId, patch)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n //alert(\"shared Folder Renamed\")\r\n //this.projects[projectIdx].channels[channelIdx].isFavorite = true;\r\n } else {\r\n this._toastService.error(\"There was an error renaming this shared folder.\");\r\n }\r\n });\r\n }\r\n }\r\n */\r\n\r\n //Delete Shared Folder\r\n _deleteSharedFolder(e?: Event) {\r\n if (e) e.stopPropagation();\r\n if (this.selectedFile === null) {\r\n // console.log(\"no file selected\");\r\n } else {\r\n this.isDeleting = true;\r\n let fileInfo: any;\r\n if(this.displayYourFilesComponent) {\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.selectedFile.chatRoomId,\r\n \"other\": \"test data\"\r\n }\r\n } else {\r\n fileInfo = {\r\n \"path\": this.selectedFile.urlPath,\r\n \"blobFileId\": this.selectedFile.blobFileId,\r\n \"channelId\": this.selectedFile.chatRoomId,\r\n }\r\n }\r\n\r\n //alert(\"FILE INFO IN SHARED FOLDER DELETE: \"+ JSON.stringify(fileInfo) +\"\\n\" + JSON.stringify(this.selectedFile));\r\n //this.isDeleting = false;\r\n \r\n this._fileStorageService.deleteSharedFolder(this.selectedFile.chatRoomId)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n if (!this.displayYourFilesComponent) {\r\n this._channelService.sharedFileDeleteComplete(this.channelId, this.selectedFile.fileName);\r\n }\r\n\r\n //makes sure we reload into the current shared folder / spot after deleting\r\n // if(this.enteredSharedFolder){\r\n // this.sharedFolderSelected = true;\r\n // if(this.currentFolderArray.length > 0)\r\n // this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n // }\r\n\r\n //this._callFileApi();\r\n\r\n this.getStorageUsage();\r\n this.isDeleting = false;\r\n this.selectedFile = null;\r\n this._fullRefreshList();\r\n } else {\r\n console.log(\"Error in delete ?\", res);\r\n this._toastService.error(`There was an error in deleting ${this.selectedFile.fileName}.`);\r\n this.isDeleting = false;\r\n }\r\n });\r\n \r\n \r\n /*\r\n this._fileStorageService.fileDelete(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n if (!this.displayYourFilesComponent) {\r\n this._channelService.sharedFileDeleteComplete(this.channelId, this.selectedFile.fileName);\r\n }\r\n this._callFileApi();\r\n this.getStorageUsage();\r\n this.isDeleting = false;\r\n this.selectedFile = null;\r\n } else {\r\n // console.log(\"Error in delete ?\", res);\r\n this._toastService.error(`There was an error in deleting ${this.selectedFile.fileName}.`);\r\n this.isDeleting = false;\r\n }\r\n });\r\n */\r\n }\r\n }\r\n\r\n /*\r\n _editSharedFolder() {\r\n this.editChannel.teamProjectId = this._projectId\r\n\r\n this._apiCallsService.putChannel(this.allChannelsFiltered[this._editIndex].channelId, this.editChannel).pipe(\r\n switchMap(res => {\r\n if (res.status === 204) {\r\n console.log(\"updated channel\");\r\n this.showModalEdit();\r\n return this._getProject(this._projectId);\r\n } else {\r\n alert(JSON.stringify(res));\r\n }\r\n }),\r\n ).subscribe();\r\n \r\n }\r\n */\r\n\r\n\r\n // Creating a Channel/Shared Folder in-tenant\r\n // Akin to Fax Folders ////CG\r\n\r\n //This gets the projects and picks out the 'Shared Folders' one if it exists\r\n async checkForSharedFolderProject2(personalFiles:FileStorageFile[]) {\r\n this._apiCallsService.getProjectByName(\"Shared Folders\")\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n console.log(\"%c checkForSharedFolderProject2 data_ \", consoleLogStyle, res.body);\r\n\r\n //find the correct team project\r\n \r\n this.sharedFolderProjectExists = true;\r\n this.sharedFolderProject = res.body[0];\r\n this.getChannelsForProject2(this.sharedFolderProject.teamProjectId); \r\n \r\n } \r\n \r\n else {\r\n console.error(\"error in getting shared folders\", res);\r\n //alert(\"Error1\");\r\n this.filesList = personalFiles;\r\n this.sharedFoldersProject.projectFound = null;\r\n //this.isLoadingProjects = false;\r\n }\r\n });\r\n }\r\n\r\n async checkForSharedFolderProject3(personalFiles:FileStorageFile[]) {\r\n this._apiCallsService.getProjectsForChannelsPage()\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"%c get Users projects/channels(3) res? \", consoleLogStyle, res.body);\r\n let projectsFound = res.body;\r\n\r\n for (const project of projectsFound) {\r\n if (project.name === \"Shared Folders\") {\r\n this.sharedFolderProjectExists = true;\r\n this.sharedFolderProject = project;\r\n break; // Exit the loop once the desired project is found\r\n }\r\n }\r\n\r\n if(this.sharedFolderProjectExists){\r\n console.log(\"Found Shared Folder Project!\");\r\n this.getChannelsForProject2(this.sharedFolderProject.teamProjectId); \r\n }\r\n else {\r\n console.error(\"error in getting shared folders_\", res);\r\n this.filesList = personalFiles;\r\n this.sharedFoldersProject.projectFound = null;\r\n }\r\n \r\n } \r\n \r\n else {\r\n console.error(\"error in getting shared folders\", res);\r\n //alert(\"Error1\");\r\n this.filesList = personalFiles;\r\n this.sharedFoldersProject.projectFound = null;\r\n //this.isLoadingProjects = false;\r\n }\r\n });\r\n }\r\n\r\n //This gets the projects and picks out the 'Shared Folders' one if it exists\r\n async checkForSharedFolderProject(personalFiles:FileStorageFile[]) {\r\n this._apiCallsService.getProjectsForChannelsPage()\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n //console.log(\"%c get Users projects/channels res? \", consoleLogStyle, res.body);\r\n this.projects = res.body;\r\n this.projects.forEach((proj) => proj.channels = []); // \r\n this.sharedFoldersProject = this.projectExists(this.projects, \"Shared Folders\");\r\n //console.log(\"this.sharedFoldersProject: \" + JSON.stringify(this.sharedFoldersProject));\r\n \r\n // Runs through the channels / folders of the Shared folders project if it is there\r\n if(this.sharedFoldersProject == null || this.sharedFoldersProject.projectFound == null || this.sharedFoldersProject.projectFound.teamProjectId == null)\r\n {\r\n // Just show personal Files until there is Shared Folders to search\r\n console.error(\"No Shared Folders Project Created\");\r\n this.isFilesLoading = false;\r\n this.sharedFoldersDownloading = false;\r\n this.filesList = personalFiles;\r\n }\r\n else{\r\n console.log(\"running getChannelsForProject 1\");\r\n this.getChannelsForProject(this.sharedFoldersProject.projectFound.teamProjectId,\r\n this.sharedFoldersProject.projectIdx)\r\n }\r\n \r\n } else {\r\n console.error(\"error in get users projects/channels for shared folder\", res)\r\n this.filesList = personalFiles;\r\n //this.isLoadingProjects = false;\r\n }\r\n });\r\n }\r\n\r\n // created if the user doesn't have a 'Shared Folders' project\r\n // Project/Channel structure used for sharing folders/files\r\n createSharedFolderProject(sharedFolderName: string) {\r\n this.isCreatingChannel = true;\r\n let newProj = {\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": \"Shared Folders\",\r\n };\r\n this._apiCallsService.postProject(newProj)\r\n .subscribe(res => {\r\n // \r\n if (res.status === 201) {\r\n // console.log(\"%c project created\", consoleLogStyle, res.body);\r\n let newChannelMade: Project = res.body;\r\n this.createSharedFolderChannel(newChannelMade.teamProjectId, \r\n newChannelMade,sharedFolderName);\r\n } else {\r\n // console.log(\"error creating project\")\r\n this.isCreatingChannel = false;\r\n this._toastService.error(\"There was an error creating new project.\");\r\n }\r\n });\r\n }\r\n\r\n // Should now return only the channels of this project that this user is a part of\r\n async getChannelsForProject2(projectId: string) {\r\n //this.projects[projectIdx].isLoadingChannels = true;\r\n this._apiCallsService.getChannelsByProject(this.userInfo.channelUserId, projectId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n //console.log(\"%c Got channel data for project \", consoleLogStyle, this.userInfo.channelUserId);\r\n if(data.body.length >= 1){\r\n console.log(\"%c Got more channel data for project \", consoleLogStyle, data);\r\n //let isSharedFolderCreator:boolean = false;\r\n //let isOwnerOfSharedFolder:boolean = false;\r\n for(let i = 0; i {\r\n if (data.status === 200) {\r\n this.projects[projectIdx].channels = data.body;\r\n this.projects[projectIdx].isLoadingChannels = false;\r\n //console.info(\"All Shared Folders Found\", this.projects[projectIdx].channels[0].channelId)\r\n if(this.projects[projectIdx].channels.length >= 1){\r\n // iterates through all the folders\r\n //var allFoldersFound = this.projects[projectIdx].channels\r\n let isSharedFolderCreator:boolean = false;\r\n let isOwnerOfSharedFolder:boolean = false;\r\n for(let i = 0; i {\r\n if (data.status === 200) {\r\n //fullChannelData = data.body;\r\n //console.log(\"sharedFolders? data Found: \" + JSON.stringify(data.body));\r\n //console.log(\"fullChannelData: \" + JSON.stringify(fullChannelData));\r\n //console.log(\"Shared Folder ID: \" + fullChannelData.blobContainerId);\r\n //console.log(\"sharedFolders Found: \" + JSON.stringify(this.sharedFolders));\r\n //alert(\"Shared Folders are Loading\");\r\n //if(this.sharedFoldersList == null)\r\n this.convertSharedFoldersToFileFolders(data.body, channelPassed);\r\n\r\n } else {\r\n this.sharedFoldersDownloading = false;\r\n console.error(data.status);\r\n }\r\n });\r\n }\r\n\r\n async _resetChannelFolderData(channelPassed:any){\r\n //var fullChannelData : any;\r\n // console.log(\"channelPassed: \" + JSON.stringify(channelPassed));\r\n //console.log(\"ALL CHANNEL USERS 137: \" + JSON.stringify(channelPassed.allChannelUsers));\r\n //console.log(\"Reset channel passed: \" + channelPassed);\r\n //console.log(\"Selected File Before Refresh: \" + JSON.stringify(this.selectedFile));\r\n this._apiCallsService.getChannel(channelPassed.chatRoomId)\r\n .subscribe((data) => {\r\n if (data.status === 200) {\r\n //fullChannelData = data.body;\r\n //console.log(\"sharedFolders? data Found: \" + JSON.stringify(data.body));\r\n this.refreshUserMemberList(data.body, channelPassed);\r\n //alert(\"REFRESH\");\r\n //console.log(\"Files List:\" + this.fullFilesList);\r\n //alert(\"DETAILS: \" + JSON.stringify(this.fullFilesList[this.selectedFileIdx]));\r\n\r\n } else {\r\n this.sharedFoldersDownloading = false;\r\n //alert(\"ERROR WITH RESET\");\r\n console.error(data.status);\r\n }\r\n });\r\n }\r\n\r\n _createSharedFolderFileList(sharedFolderChannelData: any){\r\n\r\n let folderInfo = \r\n {\r\n \"containerName\": sharedFolderChannelData.blobContainerId,\r\n \"pageSize\":this.fileListPagination.currentPage + 1,\r\n \"orderBy\":\"isFile, fileName\",\r\n \"chatRoomId\":sharedFolderChannelData.channelId\r\n }\r\n\r\n this._fileStorageService.getFiles(folderInfo)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let list: any = data.body;\r\n //console.log(\"THIS.list:\", JSON.stringify(list));\r\n //this.filesList = this.filesList.concat(list);\r\n //console.log(\"THIS.filesList:\", this.filesList);\r\n this.fileListPagination = JSON.parse(data.headers.get('X-Pagination'));\r\n this.scrollTopBlock = false;\r\n setTimeout(() => {\r\n this.isGettingNextPage = false;\r\n //console.log('%c Show getting more files = ', consoleLogStyle, this.isGettingNextPage, this.currentDateTime);\r\n });\r\n } else {\r\n console.error(\"Error in pagination ?\", data);\r\n this._toastService.error(\"There was an error in getting more files.\");\r\n this.isGettingNextPage = false;\r\n }\r\n });\r\n\r\n }\r\n\r\n // post Shared Folder \"Channel\"\r\n createSharedFolderChannel(newProjectId?: string, newProject?: Project, sharedFolderName?: string) {\r\n this.isCreatingChannel = true;\r\n let newChannelMade: ChannelFull;\r\n let channel = {\r\n //\"teamProjectId\": newProjectId ? newProjectId : this.newChannel.value.channelProject,\r\n \"teamProjectId\": newProjectId,\r\n \"channelUserId\": this.userInfo.channelUserId,\r\n \"name\": sharedFolderName,\r\n \"type\": \"legacy\", //make use of this to 'folder' later\r\n \"videoType\": \"jitsi\",\r\n \"topic\": \"Shared Folder: \" + sharedFolderName,\r\n \"welcome\": \"Shared Folder: \" + sharedFolderName,\r\n \"deleteRule\": 0,\r\n \"deleteInterval\": 0,\r\n \"scope\": \"Tenant\",\r\n \"private\": true\r\n };\r\n this._apiCallsService.postChannel(channel)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n console.log(\"%c channel created\", consoleLogStyle, res.body);\r\n \r\n //reset shared folders list\r\n //this.sharedFoldersList = [];\r\n\r\n //makes sure we reload inot the current shared folder after renaming\r\n if(this.enteredSharedFolder){\r\n this.sharedFolderSelected = true;\r\n if(this.currentFolderArray.length > 0)\r\n this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n }\r\n\r\n newChannelMade = res.body;\r\n this.isCreatingChannel = false;\r\n //console.log('New Shared Channel Created: ' + JSON.stringify(newChannelMade));\r\n this.isFolderSubmitting = false;\r\n this.newFolder.reset();\r\n this.displayCreateFolderForm = false;\r\n this._fullRefreshList();\r\n // this.onCompleteEvent.emit();\r\n // this._modalService.modalFormCompleteSubject.next();\r\n // if staying on this page can push new channel to project then push to front \r\n // this.onCompleteEvent.emit(newChannelMade); // pushes to project[] ... \r\n // this.router.navigate(['/channel', newChannelMade.channelId]);\r\n } else {\r\n // console.log(\"error creating channel\")\r\n this.isCreatingChannel = false;\r\n this.isFolderSubmitting = false;\r\n this.newFolder.reset();\r\n this.displayCreateFolderForm = false;\r\n this._toastService.error(\"There was an error creating new channel.\");\r\n }\r\n\r\n \r\n \r\n });\r\n\r\n }\r\n\r\n // desktop only on (keyup.enter) of input \r\n createFolderOnEnter() {\r\n if (this.newFolder.invalid) {\r\n // console.log(\"%c Hey no value \", consoleLogStyle);\r\n return;\r\n } else if (this.newFolder.valid) {\r\n this._createFolder();\r\n }\r\n }\r\n // create a folder end \r\n\r\n // File Upload Start \r\n // 🎫\r\n /*\r\n only accept { images, documents, audio, video } \r\n & size max { 50mb } \r\n \r\n 50 Megabytes (MB) = 52,428,800 Bytes (B)\r\n 100 Megabytes (MB) = 104,857,600 Bytes (B)\r\n \r\n .exe = '4D5A'\r\n .dmg = '78DA'\r\n */\r\n\r\n fileUploadReader(e: Event) {\r\n const target = e.target as HTMLInputElement; // ang12 ts fix\r\n const files = target.files as FileList; // ang12 ts fix\r\n this.displayCreateFolderForm = false;\r\n this.isFileUploading = true;\r\n // this.uploadStatusChange.emit(this.isFileUploading); //comment back later when in new component\r\n this.uploadFile = files[0];\r\n let fileReader = new FileReader();\r\n fileReader.onloadend = (e: ProgressEvent) => {\r\n let arr = (new Uint8Array(e.target.result)).subarray(0, 2);\r\n let size = e.target.result;\r\n // console.log(\"file byte length / file size :::\", size.byteLength)\r\n // console.log(\"buffer array :::\", arr)\r\n let hex = \"\";\r\n for (let i = 0; i < arr.length; i++) {\r\n hex += arr[i].toString(16);\r\n }\r\n // console.log(\"file hex :::\", hex)\r\n // Check the file signature against known types\r\n let exe = ['4D5A', '78DA'];\r\n if (exe.includes(hex.toUpperCase())) {\r\n // console.log(\"is exe/dmg :::\", hex)\r\n this.isFileUploading = false;\r\n this._toastService.error(\"Can not upload Executable file.\")\r\n return;\r\n } else if (size.byteLength > 104857600) {\r\n // console.log(\"size > 50mb. :::\", hex)\r\n this.isFileUploading = false;\r\n this._toastService.error(\"File size too large, file must be less than 100mb.\")\r\n return;\r\n } else {\r\n // console.log(\"not exe | not > 50mb, ok to upload\")\r\n this._uploadFileToStorage();\r\n }\r\n };\r\n fileReader.readAsArrayBuffer(this.uploadFile);\r\n // console.log(\"file size?\", this.uploadFile.size)\r\n }\r\n\r\n _uploadFileToStorage() {\r\n //alert(\"HERE!!\");\r\n let fileInfo: any;\r\n //console.log(\"FILE INFO:\");\r\n //console.log(\"this.selectedFile: \" + JSON.stringify(this.selectedFile));\r\n //console.log(\"this.displayYourFilesComponent: \" + JSON.stringify(this.displayYourFilesComponent));\r\n // Uploads to channel files if in a shared folder as they are channels\r\n // .rev having data is what determines this\r\n // TODO: simplyfy logic: displayyourfilescomponent being null is true in both the\r\n // main file component page and on channels.. however, selectedfile can be null thus chaking for .rev can cause an error \r\n ////CG\r\n if(this.displayYourFilesComponent && this.enteredSharedFolder == false) {\r\n //alert(\"REGULAR FILE\");\r\n fileInfo = {\r\n \"containerName\": this.containerName,\r\n \"path\": this.currentFolderPath() + this.uploadFile.name,\r\n \"fileName\": this.uploadFile.name,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"parentBlobFileId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"size\": this.uploadFile.size\r\n };\r\n } else { // channel files\r\n //alert(\"CHANNEL FILE\");\r\n\r\n // This is because shared folder files are channel files but the channelID is stored in the parent folder\r\n let folderPathToUploadTo = \"\";\r\n\r\n if(this.enteredSharedFolder && this.channelId == null){\r\n this.channelId = this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId;\r\n folderPathToUploadTo = \"/\" + this.uploadFile.name;\r\n }\r\n else\r\n folderPathToUploadTo = this.currentFolderPath() + this.uploadFile.name\r\n\r\n\r\n fileInfo = {\r\n \"containerName\": this.channelContainerName,\r\n \"path\": folderPathToUploadTo,\r\n \"fileName\": this.uploadFile.name,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"parentBlobFileId\": this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId,\r\n \"size\": this.uploadFile.size,\r\n \"channelId\": this.channelId,\r\n };\r\n\r\n if(!this.channelContainerName && this.enteredSharedFolder == true){\r\n //alert(\"UPLOADING TO SHARED FOLDER: \");\r\n fileInfo[\"containerName\"] = fileInfo[\"parentBlobFileId\"];\r\n //fileInfo[\"containerName\"] = \"0a05bb42-e838-440f-8bc2-b9a1a647b222\";\r\n \r\n fileInfo[\"path\"] = \"/\"+this.uploadFile.name;\r\n // fileInfo[\"parentBlobFileId\"] = null;\r\n delete fileInfo.parentBlobFileId;\r\n }\r\n }\r\n\r\n //console.log(\"FILE INFO PASSED TO UPLOAD: \"+ JSON.stringify(fileInfo));\r\n this._fileStorageService.fileUpload(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n //console.log(\"%c Success for upload: \", consoleLogStyle, res.status);\r\n this._uploadFileToStorage2(fileInfo);\r\n } else if (res.status === 400) {\r\n // console.log(\"Error with upload NAME ?\", res);\r\n this._toastService.error(\"Only file names with 'a-z 0-9 (-._)', no special characters are allowed, file was not uploaded.\");\r\n this.isFileUploading = false;\r\n } else if (res.status === 409) {\r\n // console.log(\"%c File already exists! \", consoleLogStyle, res.status);\r\n this.isFileUploading = false;\r\n const allFiles = Array.from(document.getElementsByClassName('file-item') as HTMLCollectionOf);\r\n // console.log(\"%c All files \", consoleLogStyle, allFiles);\r\n allFiles.forEach(i => i.style.display = 'none');\r\n this.isDuplicateFile = true;\r\n } else {\r\n console.log(\"error with file upload:\", res.status);\r\n this._toastService.error(\"There was an error, file was not uploaded.\");\r\n this.isFileUploading = false;\r\n }\r\n });\r\n }\r\n\r\n handleDuplicateFile(canReplace: boolean) {\r\n // console.log(\"%c Duplicate file handle \", consoleLogStyle);\r\n if (canReplace) {\r\n let fileInfo: any;\r\n let parentBlobFileIdentifierString = this.currentFolderArray[this.currentFolderArray.length - 1].blobFileId;\r\n if(this.enteredSharedFolder){\r\n parentBlobFileIdentifierString = this.currentFolderArray[this.currentFolderArray.length-1].chatRoomId;\r\n }\r\n\r\n if(this.displayYourFilesComponent) {\r\n fileInfo = {\r\n \"containerName\": this.containerName,\r\n \"path\": this.currentFolderPath() + this.uploadFile.name,\r\n \"fileName\": this.uploadFile.name,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"parentBlobFileId\": parentBlobFileIdentifierString,\r\n \"size\": this.uploadFile.size\r\n }; \r\n } else {\r\n fileInfo = {\r\n \"containerName\": this.containerName,\r\n \"path\": this.currentFolderPath() + this.uploadFile.name,\r\n \"fileName\": this.uploadFile.name,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"parentBlobFileId\": parentBlobFileIdentifierString,\r\n \"size\": this.uploadFile.size,\r\n \"channelId\": this.channelId,\r\n }; \r\n }\r\n\r\n if(!this.channelContainerName && this.enteredSharedFolder == true){\r\n //alert(\"UPLOADING TO SHARED FOLDER: \");\r\n fileInfo[\"containerName\"] = fileInfo[\"parentBlobFileId\"];\r\n //fileInfo[\"containerName\"] = \"0a05bb42-e838-440f-8bc2-b9a1a647b222\";\r\n \r\n fileInfo[\"path\"] = \"/\"+this.uploadFile.name;\r\n // fileInfo[\"parentBlobFileId\"] = null;\r\n delete fileInfo.parentBlobFileId;\r\n }\r\n\r\n //alert(\"fileInfo: \" + JSON.stringify(fileInfo));\r\n // console.log(\"%c Replace file authorized \", consoleLogStyle);\r\n this.isDuplicateFile = false;\r\n this._toastService.warn(`${fileInfo.fileName} already exists, overwriting existing file...`);\r\n this.isFileUploading = true;\r\n this._uploadFileToStorage2(fileInfo);\r\n } else if (!canReplace) {\r\n // console.log(\"%c Replace file IS NOT authorized \", consoleLogStyle);\r\n this.isDuplicateFile = false;\r\n this._callFileApi();\r\n }\r\n }\r\n\r\n _uploadFileToStorage2(fileInfo: any) {\r\n this._fileStorageService.fileUpload2(fileInfo)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n let file: any = res.body;\r\n let url = file.uploadUrl;\r\n let indexOfQueryStart = url.indexOf(\"?\");\r\n let baseUrl = url.substring(0, indexOfQueryStart) + \"/\" + this.trimStart(\"/\", fileInfo.path);\r\n this.sasToken = url.substring(indexOfQueryStart);\r\n // console.log(\"%c File Uploaded: \", consoleLogStyle ,baseUrl);\r\n this.blockBlobClient = new BlockBlobClient(baseUrl + this.sasToken);\r\n this.uploadToBlobStorage(file.blobFileId, fileInfo);\r\n } else {\r\n // console.log(\"Error with upload ?\", res);\r\n this._toastService.error(\"There was an error, file was not uploaded.\");\r\n this.isFileUploading = false;\r\n }\r\n });\r\n }\r\n\r\n trimStart(character: any, string: any) {\r\n var startIndex = 0;\r\n while (string[startIndex] === character) {\r\n startIndex++;\r\n }\r\n return string.substring(startIndex);\r\n }\r\n\r\n async uploadToBlobStorage(fileId: string, fileInfo: any) {\r\n //console.log(\"Content Being Uploaded To Blob: \");\r\n //console.log(\"File ID: \"+ JSON.stringify(fileId));\r\n //console.log(\"***FILE INFO***: \" + JSON.stringify(fileInfo));\r\n const content = this.uploadFile;\r\n // const blobName = this.uploadFile.name;\r\n // console.log(\"upload to blob\",this.blockBlobClient);\r\n let uploadBlobResponse;\r\n try {\r\n uploadBlobResponse = await this.blockBlobClient.upload(content, content.size);\r\n //this._toastService.success(`${blobName} has uploaded.`);\r\n if(this.selectedFile == null && this.currentFolderArray.length > 0)\r\n this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n \r\n //makes sure we reload into the current shared folder after uploading\r\n if(this.enteredSharedFolder){\r\n this.sharedFolderSelected = true;\r\n if(this.currentFolderArray.length > 0)\r\n this.selectedFile = this.currentFolderArray[this.currentFolderArray.length-1];\r\n }\r\n\r\n this._callFileApi();\r\n this.getStorageUsage();\r\n if (!this.displayYourFilesComponent) {\r\n this._channelService.sharedFileUploadComplete(this.router.url, fileInfo.fileName, this.channelId);\r\n }\r\n\r\n this.selectedFile = null;\r\n } catch (err) {\r\n this._deleteFileFromStorageOnly(fileId);\r\n console.error(\"error with upload to blob\", err);\r\n this._toastService.error(\"There was an error, file was not uploaded.\");\r\n } finally {\r\n this.isFileUploading = false;\r\n }\r\n }\r\n // called on upload to blob storage for error catch \r\n _deleteFileFromStorageOnly(blobFileId: string) {\r\n this._fileStorageService.blobFileDelete(blobFileId)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this._callFileApi();\r\n } else {\r\n // console.log(\"error in soft delete from error in upload:\",res);\r\n this._toastService.error(\"There was an error with uploading\");\r\n }\r\n });\r\n }\r\n //File Upload End \r\n\r\n // to close all modals | add switch if needed to close milti ... \r\n clickOffModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n // console.log(\"%c e.t, e.srcel, e.curtar \", consoleLogStyle, event.target, event.srcElement, event.currentTarget)\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n // console.log(\"%c tar.id? ,val? \", consoleLogStyle, idAttr, value)\r\n }\r\n switch (value) {\r\n case 'add-owner-modal': {\r\n this.toggleAddOwnerModal();\r\n break;\r\n }\r\n ////CG Add for completed sharing functionality \r\n // case 'share-fax-modal': {\r\n // this.toggleShareModal();\r\n // break;\r\n // }\r\n\r\n // case 'send-file-modal': {\r\n // if (this.isFaxFormEdited) {\r\n // this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"toggleSendFaxModal\");\r\n // } else {\r\n // this.toggleSendFileModal();\r\n // }\r\n // break;\r\n // }\r\n }\r\n }\r\n\r\n // helper function for finding if a channel exists in project array\r\n /* projectExists(projects:Project[], projectName: string): boolean {\r\n for (let i = 0; i < projects.length; i++) {\r\n if (projects[i].name === projectName) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n } */\r\n\r\n // Grabs any shared folders user is a member of \r\n // getUserSharedFolders(projects:Project[]): { exists: boolean, foldersFound: any } {\r\n // for (let i = 0; i < projects.length; i++) {\r\n // if (projects[i] === \"Shared Folders\") {\r\n // alert(\"Shared Folder Found: \" + projects[i].channels[0].channelName);\r\n // return { exists: true, foldersFound: projects[i].channels };\r\n // }\r\n // }\r\n // return { exists: false, foldersFound: null };\r\n // }\r\n\r\n //helper function to check if a project exists for the user\r\n projectExists(projects:Project[], projectName: string): { exists: boolean, projectFound: Project, projectIdx: number } {\r\n //console.log(\"Projects passed: \" + JSON.stringify(projects));\r\n for (let i = 0; i < projects.length; i++) {\r\n if (projects[i].name === projectName) {\r\n //console.log(\"Shared Folder Channels Found: \" + projects[i]);\r\n\r\n /*this.getChannelsForProject(projects[i].teamProjectId,i).then(()=>{\r\n console.log(\"SHARED FOLDERS LOADED!!\");\r\n });*/\r\n \r\n return { exists: true, projectFound: projects[i], projectIdx: i };\r\n }\r\n }\r\n return { exists: false, projectFound: null, projectIdx: -1 };\r\n }\r\n\r\n // setCreatingSharedFolder(){\r\n // this.creatingSharedFolder = true;\r\n // this._createFolder();\r\n // }\r\n\r\n\r\n\r\n //builds the lists of owners or members in the shared folder\r\n /*\r\n buildOwnerMemberList(sharedFolderUsersFound:any)\r\n {\r\n const allUserData: string[] = [];\r\n\r\n for (let i = 0; i < sharedFolderUsersFound.length; i++) {\r\n const userInfo = sharedFolderUsersFound[i][\"chatUserKeyNavigation\"];\r\n allUserData.push(userInfo);\r\n }\r\n\r\n return allUserData;\r\n }\r\n */\r\n\r\n buildOwnerMemberList(sharedFolderUsersFound: any[]) {\r\n const allUserData: any[] = [];\r\n const creators: any[] = [];\r\n \r\n for (let i = 0; i < sharedFolderUsersFound.length; i++) {\r\n const userInfo = sharedFolderUsersFound[i][\"chatUserKeyNavigation\"];\r\n if (userInfo.rank === 'creator') {\r\n creators.push(userInfo);\r\n } else {\r\n allUserData.push(userInfo);\r\n }\r\n }\r\n \r\n // Sort the creators array by displayName\r\n creators.sort((a, b) => a.displayName.localeCompare(b.displayName));\r\n \r\n // Sort the allUserData array by displayName\r\n allUserData.sort((a, b) => a.displayName.localeCompare(b.displayName));\r\n \r\n // Concatenate the creators array with the allUserData array (creators first)\r\n const sortedUserData = creators.concat(allUserData);\r\n \r\n return sortedUserData;\r\n }\r\n \r\n\r\n refreshUserMemberList(sharedfolderdata: ChannelFull, channelUsersPassed: ChannelCard)\r\n {\r\n //console.log(\"Converting shared Folder\");\r\n //console.log(\"Refreshing the following folder data: \" + JSON.stringify(sharedfolderdata) );\r\n //console.log(\"channelUsersPassed 137: \" + JSON.stringify(channelUsersPassed));\r\n //console.log(\"channelUsersPassed 137 array 0: \" + JSON.stringify(channelUsersPassed[0].displayName));\r\n \r\n // Parsing Members and Owners out\r\n\r\n //Members\r\n const sharedFolderMembersFound = sharedfolderdata.teamProjectKeyNavigation.channels[0][\"chatRoomChatUser1\"];\r\n let allmemberUserData: string[] = this.buildOwnerMemberList(sharedFolderMembersFound);\r\n\r\n //Owners\r\n const sharedFolderOwnersFound = sharedfolderdata.teamProjectKeyNavigation.channels[0][\"chatRoomChatUsers\"];\r\n let allOwnerUserData: string[] = this.buildOwnerMemberList(sharedFolderOwnersFound);\r\n\r\n\r\n //updates the searchable pool of users to add as owners/members to a shared folder\r\n // this.sharedFolderUserPool = this.buildFilteredUserList(this.selectedFile);\r\n\r\n //sharedfolderdata.teamProjectKeyNavigation.channels[0][\"chatRoomChatUser1\"][0][\"chatUserKeyNavigation\"]\r\n \r\n let sharedFolderFileObj: FileStorageFile = \r\n {\r\n blobFileId: sharedfolderdata.blobContainerId,\r\n fileName: sharedfolderdata.name + \"/\", // added / due to naming removing last char\r\n chatRoomId: sharedfolderdata.channelId,\r\n chatUserId: sharedfolderdata.channelUserId,\r\n chatUserKeyNavigation: sharedfolderdata.chatUserKeyNavigation,\r\n created: sharedfolderdata.dateCreated,\r\n lastActivity: sharedfolderdata.lastActivity,\r\n lastUpdated: sharedfolderdata.lastActivity,\r\n rev: sharedfolderdata.channelId,\r\n urlPath: \"/\" + sharedfolderdata.name + \"/\",\r\n urlPathLower: \"/\" + sharedfolderdata.name.toLowerCase() + \"/\",\r\n chatRoomChatUsers: channelUsersPassed,\r\n sharedFolderOwners: allOwnerUserData,\r\n sharedFolderMembers: allmemberUserData,\r\n };\r\n\r\n this.selectedFile = sharedFolderFileObj;\r\n\r\n //updates the folder in the list without full reset\r\n this.fullFilesList[this.selectedFileIdx] = sharedFolderFileObj;\r\n\r\n //refreshes the search list of users for shared folder\r\n this._getUsersBySearchQuery(this.selectedFile.chatRoomChatUsers.allChannelUsers);\r\n \r\n // console.log(\"UPDATED OWNER/MEMBER DATA: \" + JSON.stringify(sharedFolderFileObj));\r\n /*\r\n this.sharedFoldersList.push(sharedFolderFileObj);\r\n console.log(\"Shared Folder ObjectPushed: \" + JSON.stringify(sharedFolderFileObj) );\r\n //console.log(\"Shared Folder MemberID: \" + JSON.stringify(sharedFolderFileObj.sharedFolderMembers[0][\"chatUserNavigation\"][\"channelUserId\"]) );\r\n\r\n //add to the main files list\r\n this.filesList = [];\r\n this.filesList = this.sharedFoldersList.concat(this.personalFilesList);\r\n this.fullFilesList = this.filesList;\r\n this.isFilesLoading = false;\r\n this.sharedFoldersDownloading = false;\r\n //console.log(\"Shared Folder List File Objects Created: \"+ JSON.stringify(this.sharedFoldersList));\r\n //console.log(\"File List after shared folders found: \"+ JSON.stringify(this.filesList));\r\n */\r\n }\r\n\r\n //used to filter out current shared folder users out of the search query\r\n /*\r\n buildFilteredUserList(selectedFile: any) {\r\n if(selectedFile == null){\r\n console.error(\"Selected File is Null\");\r\n return null;\r\n }\r\n const allChannelUsers = selectedFile.chatRoomChatUsers.allChannelUsers;\r\n const sharedFolderOwners = selectedFile.sharedFolderOwners;\r\n const sharedFolderMembers = selectedFile.sharedFolderMembers;\r\n \r\n // Filter users from allChannelUsers that are not in sharedFolderOwners or sharedFolderMembers\r\n const filteredUsers = allChannelUsers.filter((user: any) => {\r\n // Check if user is not in sharedFolderOwners or sharedFolderMembers\r\n const isNotInOwners = !sharedFolderOwners.some((owner: any) => owner.channelUserId === user.channelUserId);\r\n const isNotInMembers = !sharedFolderMembers.some((member: any) => member.channelUserId === user.channelUserId);\r\n console.log(\"FILTERED OWNERS!\");\r\n // Include the user in the filtered list if they are not in sharedFolderOwners or sharedFolderMembers\r\n return isNotInOwners && isNotInMembers;\r\n });\r\n \r\n console.log(\"FILTERED USERS: \" + JSON.stringify(filteredUsers));\r\n return filteredUsers;\r\n }\r\n */ \r\n\r\n // converts from ChannelFull to FileStorageFile\r\n convertSharedFoldersToFileFolders(sharedfolderdata: ChannelFull, channelUsersPassed: ChannelCard)\r\n {\r\n //console.log(\"Converting shared Folder\");\r\n //console.log(\"Shared Folder Data: \" + JSON.stringify(sharedfolderdata) );\r\n //console.log(\"channelUsersPassed 137: \" + JSON.stringify(channelUsersPassed));\r\n //console.log(\"channelUsersPassed 137 array 0: \" + JSON.stringify(channelUsersPassed[0].displayName));\r\n \r\n // Parsing Members and Owners out of search query\r\n\r\n //Members\r\n const sharedFolderMembersFound = sharedfolderdata.teamProjectKeyNavigation.channels[0][\"chatRoomChatUser1\"];\r\n let allmemberUserData: string[] = this.buildOwnerMemberList(sharedFolderMembersFound);\r\n\r\n //Owners\r\n const sharedFolderOwnersFound = sharedfolderdata.teamProjectKeyNavigation.channels[0][\"chatRoomChatUsers\"];\r\n let allOwnerUserData: string[] = this.buildOwnerMemberList(sharedFolderOwnersFound);\r\n\r\n //updates the searchable pool of users to add as owners/members to a shared folder\r\n // this.sharedFolderUserPool = this.buildFilteredUserList(this.selectedFile);\r\n\r\n //\r\n \r\n\r\n //sharedfolderdata.teamProjectKeyNavigation.channels[0][\"chatRoomChatUser1\"][0][\"chatUserKeyNavigation\"]\r\n \r\n let sharedFolderFileObj: FileStorageFile = \r\n {\r\n blobFileId: sharedfolderdata.blobContainerId,\r\n fileName: sharedfolderdata.name + \"/\", // added / due to naming removing last char\r\n chatRoomId: sharedfolderdata.channelId,\r\n chatUserId: sharedfolderdata.channelUserId,\r\n chatUserKeyNavigation: sharedfolderdata.chatUserKeyNavigation,\r\n created: sharedfolderdata.dateCreated,\r\n lastActivity: sharedfolderdata.lastActivity,\r\n lastUpdated: sharedfolderdata.lastActivity,\r\n rev: sharedfolderdata.channelId,\r\n urlPath: \"/\" + sharedfolderdata.name + \"/\",\r\n urlPathLower: \"/\" + sharedfolderdata.name.toLowerCase() + \"/\",\r\n chatRoomChatUsers: channelUsersPassed,\r\n sharedFolderOwners: allOwnerUserData,\r\n sharedFolderMembers: allmemberUserData,\r\n };\r\n this.sharedFoldersList.push(sharedFolderFileObj);\r\n // console.log(\"Shared Folder ObjectPushed: \" + JSON.stringify(sharedFolderFileObj) );\r\n //console.log(\"Shared Folder MemberID: \" + JSON.stringify(sharedFolderFileObj.sharedFolderMembers[0][\"chatUserNavigation\"][\"channelUserId\"]) );\r\n\r\n //add to the main files list\r\n this.filesList = [];\r\n\r\n //sort the shared folders list\r\n this.sharedFoldersList.sort((a, b) => a.fileName.localeCompare(b.fileName));\r\n\r\n this.filesList = this.sharedFoldersList.concat(this.personalFilesList);\r\n this.fullFilesList = this.filesList;\r\n this.isFilesLoading = false;\r\n this.sharedFoldersDownloading = false;\r\n //console.log(\"Shared Folder List File Objects Created: \"+ JSON.stringify(this.sharedFoldersList));\r\n //console.log(\"File List after shared folders found: \"+ JSON.stringify(this.filesList));\r\n }\r\n\r\n checkIfOnlyASharedFolderMember(userToCheck: any, sharedFolderMembers: any[])\r\n {\r\n //console.log(\"User Checking: \" + JSON.stringify(userToCheck));\r\n //console.log(\"Member List Passed: \" + JSON.stringify(sharedFolderMembers));\r\n //const userToCheck = { channelUserId: \"123\" }; // User to check against sharedFolderMembers\r\n // const sharedFolderMembers = [\r\n // { channelUserId: \"456\", name: \"John\" },\r\n // { channelUserId: \"789\", name: \"Jane\" },\r\n // { channelUserId: \"234\", name: \"Alice\" },\r\n // ];\r\n\r\n let userFound = false;\r\n\r\n for (let i = 0; i < sharedFolderMembers.length; i++) {\r\n const member = sharedFolderMembers[i];\r\n if (member.channelUserId === userToCheck.channelUserId) {\r\n userFound = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!userFound) {\r\n //console.log(\"User not found in sharedFolderMembers\");\r\n return false;\r\n } else {\r\n //console.log(\"User found in sharedFolderMembers\");\r\n return true;\r\n }\r\n\r\n }\r\n}\r\n// end \r\n\r\n","\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n 1\"\r\n (click)=\"goBack()\"\r\n @fadeIn\r\n title=\"go back\"\r\n class=\"back-button\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {{\r\n currentFolderArray[currentFolderArray.length - 1]\r\n .fileName | folderName\r\n }}\r\n
\r\n \r\n {{\r\n currentFolderArray[currentFolderArray.length - 1]\r\n .fileName | channelFolderPipe: channelName\r\n }}\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {{ formattedCurrentDateTime }}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Creating folder...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Uploading file...\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
Name
\r\n
Shared With
\r\n
Created by
\r\n
Last Modified
\r\n
Size
\r\n \r\n Actions\r\n
\r\n \r\n \r\n
\r\n
Name
\r\n
Created by
\r\n
Last Modified
\r\n
Size
\r\n \r\n Actions\r\n
\r\n \r\n \r\n \r\n \r\n This folder is empty.\r\n \r\n \r\n No match found in this folder.\r\n \r\n \r\n A file with this name already exist in this folder,\r\n would you like to replace it ?\r\n \r\n
\r\n \r\n REPLACE\r\n \r\n \r\n BACK\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  \r\n \r\n {{ file.fileName }}\r\n \r\n \r\n {{ file.fileName | folderName }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n \"\r\n >\r\n \r\n \r\n {{ file.chatRoomChatUsers.allChannelUsers.length }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{ file.chatUserKeyNavigation.displayName }}\r\n \r\n \r\n \r\n {{ file.isFile ? (file.lastUpdated + \"Z\" | date: \"M/d/yy h:mm a\") : '-'}}\r\n \r\n \r\n \r\n {{ file.size | byteConvert }}\r\n \r\n \r\n -\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Downloading...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Adding...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Renaming...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Deleting...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n File: \r\n
\r\n {{ file.fileName }}\r\n
\r\n \r\n \r\n Path:
 \r\n
\r\n {{ file.urlPath }}\r\n
\r\n \r\n \r\n Size:
 \r\n
\r\n {{ file.size | byteConvert }}\r\n
\r\n \r\n \r\n Uploaded:
 \r\n
\r\n {{\r\n file.created + \"Z\"\r\n | date: \"M/d/yy h:mm a\"\r\n }}\r\n
\r\n \r\n \r\n Uploaded By:
 \r\n
\r\n {{\r\n file.chatUserKeyNavigation\r\n .displayName\r\n }}\r\n
\r\n \r\n \r\n Last Modified: \r\n
\r\n {{\r\n file.lastUpdated + \"Z\"\r\n | date: \"M/d/yy h:mm a\"\r\n }}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Name: \r\n
\r\n {{ file.fileName | folderName }}\r\n
\r\n \r\n \r\n Path: \r\n
\r\n {{ file.urlPath }}\r\n
\r\n \r\n \r\n Created: \r\n
\r\n {{\r\n file.created + \"Z\"\r\n | date: \"M/d/yy h:mm a\"\r\n }}\r\n
\r\n \r\n \r\n Created By: \r\n
\r\n {{\r\n file.chatUserKeyNavigation\r\n .displayName\r\n }}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n  Loading more files...\r\n \r\n \r\n \r\n \r\n  \r\n \r\n \r\n \r\n
\r\n \r\n

Storage

\r\n
\r\n
\r\n
\r\n

\r\n {{fileStorageUsage.organizationStorageUsage|byteConvert}} \r\n of \r\n {{fileStorageUsage.organizationStorageSize|byteConvert}}\r\n used\r\n

\r\n \r\n

\r\n {{fileStorageUsage.personalStorageUsage|byteConvert}} \r\n of \r\n {{fileStorageUsage.personalStorageSize|byteConvert}}\r\n used\r\n

\r\n
\r\n
\r\n
\r\n

\r\n {{fileStorageUsage.organizationStorageUsage|byteConvert}} \r\n used\r\n

\r\n \r\n

\r\n {{fileStorageUsage.personalStorageUsage|byteConvert}} \r\n used\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n  Uploading file...\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Creating folder...\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Downloading...\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Adding...\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Renaming...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n  Deleting...\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n

Storage

\r\n
\r\n
\r\n
\r\n

\r\n {{fileStorageUsage.organizationStorageUsage|byteConvert}} \r\n of \r\n {{fileStorageUsage.organizationStorageSize|byteConvert}}\r\n used\r\n

\r\n \r\n

\r\n {{fileStorageUsage.personalStorageUsage|byteConvert}} \r\n of \r\n {{fileStorageUsage.personalStorageSize|byteConvert}}\r\n used\r\n

\r\n
\r\n
\r\n
\r\n

\r\n {{fileStorageUsage.organizationStorageUsage|byteConvert}} \r\n used\r\n

\r\n \r\n

\r\n {{fileStorageUsage.personalStorageUsage|byteConvert}} \r\n used\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n

Current Owners

\r\n = 3\"\r\n >\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{ user.displayName }}\r\n

\r\n \r\n {{ user.userName }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{ user.displayName }}\r\n

\r\n \r\n {{ user.userName }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n

Current Members

\r\n 3\"\r\n >\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {{ user.displayName }}\r\n

\r\n \r\n {{ user.userName }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n

Share Folder With...

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n 3\"\r\n >\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

\r\n {{ user.displayName }}\r\n

\r\n

\r\n {{ user.username }}\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n No Users Found\r\n

\r\n \r\n \r\n\r\n","import { Component } from '@angular/core';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { Constants } from '../../../constants';\r\n\r\n@Component({\r\n selector: 'guest-sign-out',\r\n templateUrl: './guest-sign-out.component.html',\r\n styleUrls: ['./guest-sign-out.component.scss']\r\n})\r\nexport class GuestSignOutComponent {\r\n public accountSite = Constants.accountSite;\r\n constructor(\r\n private _authService: AuthService\r\n ) { }\r\n signOutGuest() {\r\n this._authService.signOut();\r\n }\r\n}\r\n","\r\n
\r\n \r\n \r\n
\r\n","import { Component, Input, OnInit, Output, EventEmitter, Inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter, tap } from 'rxjs/operators';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { ChannelService } from '../../../services/channel-service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { ApiCallsService } from '../../../services/api-calls.service';\r\nimport { AppComponent } from 'src/app/app.component';\r\nimport { Constants } from '../../../constants';\r\nimport { ScreenCheck } from '../../functions';\r\nimport { ChannelFull } from '../../interface/channel-full';\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { Platform } from '@angular/cdk/platform';\r\n\r\ndeclare var JitsiMeetExternalAPI: any;\r\n\r\ninterface Device {\r\n deviceId: string;\r\n groupId: string;\r\n kind: string;\r\n label: string;\r\n};\r\n\r\n@Component({\r\n selector: 'jitsi-video',\r\n templateUrl: './jitsi-video.component.html',\r\n styleUrls: ['./jitsi-video.component.scss']\r\n})\r\nexport class JitsiVideoComponent implements OnInit {\r\n @Input() isGuest: boolean;\r\n @Input() channelId: string;\r\n @Input() channelInfo: ChannelFull;\r\n @Input() userName: string;\r\n @Input() forMedicalEMT: boolean;\r\n @Input() preventList: string[]; // Features To be Prevented\r\n @Input() mainChannel: boolean;\r\n @Output() endCallEvent = new EventEmitter();\r\n @Output() startCallEvent = new EventEmitter();\r\n @Output() openChatEvent = new EventEmitter();\r\n @Output() openUsersEvent = new EventEmitter();\r\n @Output() openFilesEvent = new EventEmitter();\r\n @Output() participantsListOut = new EventEmitter();\r\n\r\n public apiObj: any = null;\r\n public dispName: string = null;\r\n public roomName: string = \"\"; // meeting_id\r\n public callerId: string = null; // users participant id\r\n public jitsiToken: string = \"\";\r\n\r\n // public showJoinModal: boolean = false; // not in use ... \r\n public showSettingsModal: boolean = false;\r\n public showMoreOptionsModal: boolean = false;\r\n public showKickParticipantsModal: boolean = false;\r\n public joiningCall: boolean = false;\r\n public isTokenFound: boolean = false;\r\n\r\n public hideStartVideo: boolean = false; //for joining call outside of channel\r\n public inVideo: boolean = false;\r\n public isRecording: boolean = false;\r\n public isStreaming: boolean = false;\r\n public disableRecording: boolean = false;\r\n public disableStreaming: boolean = false;\r\n public isFullScreen: boolean = false;\r\n public inCall: boolean = false;\r\n public handsUp: boolean = false;\r\n public isModerator: boolean = false;\r\n public participantsInCall: any = [];\r\n\r\n public devicePreferences: any = {};\r\n\r\n //Feature List\r\n public preventStartVideo: boolean = false; //for police vdjj\r\n public featureList: any[] = [\r\n // {\r\n // name: \"chat\",\r\n // id: \"btnToggleChat\",\r\n // icon: \"-comment-text\",\r\n // title: \"Toggle Chat\",\r\n // method: () => {\r\n // this.openChat()\r\n // }\r\n // },\r\n {\r\n name: \"screenshare\",\r\n id: \"btnScreenShareCustom\",\r\n icon: \"fas fa-desktop\",\r\n title: \"screen share\",\r\n method: () => {\r\n this.screenShareCustom()\r\n }\r\n },\r\n {\r\n name: \"raisehand\",\r\n id: \"raiseHand\",\r\n icon: \"fas fa-hand-paper\",\r\n title: \"raise hand\",\r\n method: () => {\r\n this.setHand()\r\n }\r\n },\r\n {\r\n name: \"tileview\",\r\n id: \"btnCustomTileView\",\r\n icon: \"fas fa-th\",\r\n title: \"tile view\",\r\n method: () => {\r\n this.customTileView()\r\n }\r\n },\r\n {\r\n name: \"fullscreen\",\r\n id: \"btnSetFullScreen\",\r\n icon: \"fas fa-expand\",\r\n title: \"full screen\",\r\n method: () => {\r\n this.setFullScreen()\r\n }\r\n },\r\n {\r\n name: \"settings\",\r\n id: \"btnCustomSettings\",\r\n icon: \"fas fa-cog\",\r\n title: \"video settings\",\r\n method: () => {\r\n this.showPreview()\r\n }\r\n },\r\n {\r\n name: \"virtual background\",\r\n id: \"btnCustomVirtualBackgrounds\",\r\n icon: \"fas fa-image\",\r\n title: \"Virtual Backgrounds\",\r\n method: () => {\r\n this.toggleVirtualBackgrounds()\r\n }\r\n }\r\n\r\n // {\r\n // name: \"users\",\r\n // id: \"btnToggleUsers\",\r\n // icon: \"-accounts\",\r\n // title: \"Toggle Users\",\r\n // method: () => {\r\n // this.openUsers()\r\n // }\r\n // },\r\n // {\r\n // name: \"files\",\r\n // id: \"btnToggleFiles\",\r\n // icon: \"-folder\",\r\n // title: \"Toggle Files\",\r\n // method: () => {\r\n // this.openFiles()\r\n // }\r\n // }\r\n ];\r\n\r\n //for forMedicalEMT\r\n public altHeight: boolean = false;\r\n\r\n public callId: any = null;\r\n public initiatorClientId = null;\r\n public initiatorConnectionId: any = null;\r\n public initiatorUserId: any = null;\r\n\r\n //for handling out site wide sidebar display\r\n public sidebarShowing: boolean;\r\n // public sidebarPinned: boolean;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n public jitsiMediaBreak: number = 480;\r\n public jitsiBreak: boolean;\r\n\r\n // 🚧 new device preview vars ...\r\n public showPreviewModal: boolean = false;\r\n \r\n public previewVideoInputs: Array = [];\r\n public previewAudioInputs: Array = [];\r\n public previewAudioOutputs: Array = [];\r\n \r\n public previewCurrentVideoInputId: string = null;\r\n public previewCurrentAudioInputId: string = null;\r\n public previewCurrentAudioOutputId: string = null; // \r\n \r\n public previewVideoStream: MediaStream;\r\n public previewAudioStream: MediaStream;\r\n \r\n public videoPreviewOn: boolean;\r\n public audioPreviewOn: boolean = false;\r\n \r\n public currentMicrophoneStream: MediaStreamAudioSourceNode;\r\n public audioAnalyzer: AnalyserNode;\r\n // 💡❌ replace with new AudioWorklet ... \r\n public audioScriptProcessor: ScriptProcessorNode;\r\n\r\n public devicesReady: any = false;\r\n\r\n public isSettingJitsiDevices: boolean;\r\n\r\n public matRippleDarkMode = '#ffffff1a';\r\n\r\n constructor(\r\n @Inject('rippleColor') public rippleColor: string,\r\n private _toastService: ToastNotificationService,\r\n public _channelService: ChannelService,\r\n private _authService: AuthService,\r\n private _apiCallsService: ApiCallsService,\r\n private _appComp: AppComponent,\r\n private _router: Router,\r\n public _platform: Platform,\r\n ) {\r\n if (!this.forMedicalEMT) {\r\n this.forMedicalEMT = false;\r\n }\r\n\r\n //inital set for sidebar\r\n this.sidebarShowing = this._appComp.showSidebar;\r\n // this.sidebarPinned = this._appComp.pinnedSideBar;\r\n\r\n this.subscriptions.push(this._channelService.onJoinedPageEvent$\r\n .subscribe((channelId: any) => {\r\n // console.log(\"JoinedPageEvent channelID: \" + channelId);\r\n if (this.mainChannel) {\r\n this.channelId = channelId;\r\n this.getJitsiToken();\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.push(this._channelService.onSelectPoliceOfficerEvent$\r\n .subscribe((channelId: any) => {\r\n // console.log(\"JoinedPageEvent channelID: \" + channelId);\r\n this.channelId = channelId;\r\n this.getJitsiToken();\r\n })\r\n );\r\n\r\n this.subscriptions.push(this._channelService.onJitsiCallCreatedEvent$.subscribe((callId: any) => {\r\n //console.log(\"jitsicallcreated sub\");\r\n // console.log(\"callchannelevent sub\");\r\n this.callId = callId;\r\n this.startUp();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiCallPromptEvent$.subscribe((callObj: any) => {\r\n // console.warn(\"jitsicallprompt sub\");\r\n // this.channelId = callObj.channelId;\r\n // this.roomName = callObj.channelId;\r\n this.initiatorClientId = callObj.initiatorClientId;\r\n this.initiatorConnectionId = callObj.initiatorConnectionId;\r\n this.initiatorUserId = callObj.initiatorUserId;\r\n\r\n // if (this.forMedicalEMT) {\r\n if (this.preventStartVideo) {\r\n if (false === this.inCall) {\r\n this.callId = callObj.callId;\r\n this.startUpHelper(false);\r\n }\r\n } else {\r\n //this.showJoinModal = true;\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiCallAcceptedEvent$.subscribe(() => {\r\n this.startUp();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiHangUpUserEvent$.subscribe(() => {\r\n this.hangUp();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiHangUpLastUserEvent$.subscribe(() => {\r\n // if (this.forMedicalEMT) {\r\n if (this.preventStartVideo) {\r\n this.hangUp();\r\n }\r\n }));\r\n\r\n // this.subscriptions.push(this._channelService.onHandEvent$.subscribe((displayName: any) => {\r\n // // if (this.handsUp === false) {\r\n // // this._toastService.(displayName + \" raised their hand!\");\r\n // // } else {\r\n // // this._toastService.info(displayName + \" lowered their hand!\");\r\n // // }\r\n // //console.log(\"handevent\");\r\n // // if (this.handsUp === false) {\r\n // // this.handsUp = true;\r\n // // } else {\r\n // // this.handsUp = false;\r\n // // }\r\n // }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiMaxAttendeeLimitReachedEvent$.subscribe(() => {\r\n this._toastService.error(\"This call is full, no more attendees can join this call\");\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiToggleRecordingEvent$.subscribe((disableRecording: any) => {\r\n if (disableRecording === \"true\" || disableRecording === true) {\r\n this.isRecording = true;\r\n this.disableRecording = true;\r\n } else {\r\n this.isRecording = false;\r\n this.disableRecording = false;\r\n }\r\n // console.log(\"isRecording: \" + this.isRecording);\r\n // console.log(\"disableRecording: \" + this.disableRecording);\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiSelfJoinEvent$.subscribe((joinChannelId: string) => {\r\n if (joinChannelId === this.channelId) {\r\n this.setPreference(true);\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onSidebarDisplayEvent$.subscribe(show => {\r\n this.sidebarShowing = show;\r\n }));\r\n\r\n // this.subscriptions.push(this._channelService.onSidebarPinEvent$.subscribe(isPinned => {\r\n // this.sidebarPinned = isPinned;\r\n // }));\r\n\r\n this.subscriptions.push(this._channelService.onHangUpCallEvent$.subscribe( ()=> {\r\n if (this.inCall) {\r\n this.hangUp();\r\n }\r\n }));\r\n\r\n this.jitsiBreak = ScreenCheck(this.jitsiMediaBreak);\r\n }\r\n\r\n ngOnInit() {\r\n if (!this.userName) {\r\n this.dispName = \"New User\";\r\n } else {\r\n this.dispName = this.userName;\r\n }\r\n // console.log(\"USER NAME On Init: \" + this.dispName);\r\n this.getJitsiToken();\r\n //console.log(\"ngOnIt going to call getPreferences\")\r\n this.getPreferences();\r\n if (this.preventList) {\r\n // alert(this.preventList);\r\n this.preventList.forEach(item => {\r\n if (item === 'startVideo') {\r\n this.preventStartVideo = true;\r\n } else if (item === 'record') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"record\")\r\n } else if (item === 'chat') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"chat\")\r\n } else if (item === 'users') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"users\")\r\n } else if (item === 'files') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"files\")\r\n }\r\n });\r\n }\r\n this.featureList.forEach((item, i) => {\r\n if (i === 0) {\r\n item.switch = () => {\r\n return true;\r\n };\r\n } else if (i === 1) {\r\n item.switch = () => {\r\n return this.jitsiCheck(360);\r\n };\r\n } else if (i === 2) {\r\n item.switch = () => {\r\n return this.jitsiCheck(420);\r\n };\r\n } else if (i === 3) {\r\n item.switch = () => {\r\n return this.jitsiCheck(480);\r\n };\r\n } else if (i === 4) {\r\n item.switch = () => {\r\n return this.jitsiCheck(540);\r\n };\r\n } else {\r\n item.switch = () => {\r\n return false;\r\n };\r\n }\r\n });\r\n if (this._channelService.useManagerSettings) {\r\n if (!this.channelId) {\r\n this._toastService.error(\"Failed to join this call\");\r\n this.joiningCall = false;\r\n } else {\r\n this.joiningCall = true;\r\n this.hideStartVideo = true;\r\n this.roomName = this.channelId;\r\n this._channelService.JitsiCallChannel(this.roomName);\r\n }\r\n }\r\n \r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n getJitsiToken() {\r\n // console.log(\"getJitsiToken channelId: \" + this.channelId)\r\n let jitsiJwtObject =\r\n {\r\n \"channelId\": this.channelId,\r\n \"userId\": this._authService._user.profile.sub,\r\n };\r\n this._apiCallsService.postJitsiJwt(jitsiJwtObject)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // console.log(\"Token Created\");\r\n this.jitsiToken = res.body.value;\r\n // console.log(\"Token:\" + this.jitsiToken);\r\n // activate Join Conversation button now that the Jitsi token is found\r\n this.isTokenFound = true;\r\n } else if (res.status === 401) {\r\n // console.log(\"Unauthorized\");\r\n this._router.navigate(['/unauthorized']);\r\n } else {\r\n // console.log(res);\r\n // alert(JSON.stringify(res));\r\n }\r\n });\r\n }\r\n\r\n startUp() {\r\n this.inCall = true;\r\n // console.log(\"CHANNEL AT STARTUP: \" + this.channelId);\r\n // console.log(\"startup\");\r\n // this.showJoinModal = false;\r\n this.startMeeting(this.roomName, this.dispName, this.jitsiToken);\r\n //let joinMsg: any = document.querySelector('#joinMsg');\r\n //let btnStartup: any = document.querySelector(\"#btnStartup\");\r\n //joinMsg.innerHTML = \"Joining...\";\r\n //if (btnStartup) {\r\n // btnStartup.style.display = 'none';\r\n //}\r\n }\r\n\r\n startUpHelper(isCaller: any) {\r\n //this._channelService.sendJSON();\r\n // console.log(\"startup helper isCaller: \" + isCaller);\r\n if (!this.channelId) {\r\n this._toastService.error(\"Failed to join this call\");\r\n // console.log('meeting id is missing');\r\n this.joiningCall = false;\r\n } else {\r\n // there IS an element Type ... ... \r\n // let joinMsg: HTMLElement = document.querySelector('#joinMsg');\r\n // let btnStartup: HTMLElement = document.querySelector(\"#btnStartup\");\r\n let guest: HTMLElement = document.querySelector(\"#guestSignOut\");\r\n // joinMsg.innerHTML = \"Joining...\";\r\n // if (btnStartup) {\r\n // btnStartup.style.display = 'none';\r\n // }\r\n this.hideStartVideo = true;\r\n if (this.isGuest && guest) {\r\n guest.style.display = 'none';\r\n }\r\n this.roomName = this.channelId;\r\n if (isCaller) {\r\n // console.log(\"startuphelper channelId: \" + this.channelId);\r\n // console.log(\"iscaller true\");\r\n this._channelService.JitsiCallChannel(this.roomName);\r\n } else {\r\n this._channelService.JitsiAcceptCall(this.callId, this.roomName, this.initiatorClientId, this.initiatorConnectionId, this.initiatorUserId);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n hangUp() {\r\n this.inCall = false;\r\n this.isModerator = false;\r\n if(this.isStreaming) {\r\n this.stopStream();\r\n }\r\n let toolbox: HTMLElement = document.querySelector('#toolbox');\r\n // let btnStartup: HTMLElement = document.querySelector(\"#btnStartup\");\r\n let guest: HTMLElement = document.querySelector(\"#guestSignOut\");\r\n this.apiObj.executeCommand('hangup');\r\n // if (btnStartup) {\r\n // btnStartup.style.display = 'inline-block';\r\n // }\r\n this.hideStartVideo = false;\r\n if (this.isGuest && guest) {\r\n guest.style.display = 'block';\r\n }\r\n if (toolbox) {\r\n toolbox.style.display = 'none';\r\n }\r\n this.inVideo = false;\r\n // console.log(\"hanging up call\")\r\n if (this.isFullScreen) {\r\n this.closeFullScreen();\r\n }\r\n if (this.preventStartVideo) {\r\n // console.log(\"hanging up emt\");\r\n this.altHeight = false;\r\n }\r\n this.featureList.find(item => {\r\n if (item.name === \"screenshare\") {\r\n item.class = \"\";\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n hangUpHelper() {\r\n if (!this.channelId) {\r\n this._toastService.error(\"Failed to leave this call\");\r\n // console.log('meeting id is missing');\r\n } else {\r\n this.roomName = this.channelId;\r\n }\r\n this.hangUp();\r\n this.endCallEvent.emit();\r\n this._channelService.JitsiHangUpUser(this.callId, this.roomName);\r\n }\r\n\r\n customMic() {\r\n this.apiObj.executeCommand('toggleAudio');\r\n // this.updateLastActivity();\r\n }\r\n\r\n customCamera() {\r\n this.apiObj.executeCommand('toggleVideo');\r\n // this.updateLastActivity();\r\n }\r\n\r\n customTileView() {\r\n this.apiObj.executeCommand('toggleTileView');\r\n // this.updateLastActivity();\r\n }\r\n\r\n screenShareCustom() {\r\n this.apiObj.executeCommand('toggleShareScreen');\r\n // this.updateLastActivity();\r\n }\r\n\r\n // ❌❌❌ live streaming not in use here ... can we remove ... \r\n startRecording() {\r\n // console.log(\"startrecording\");\r\n this.isRecording = true;\r\n this.apiObj.executeCommand('startRecording', { mode: 'file' });\r\n this._channelService.onJitsiToggleRecordingButton(true, this.roomName);\r\n }\r\n\r\n stopRecording() {\r\n // console.log(\"stoprecording\");\r\n this.isRecording = false;\r\n this.apiObj.executeCommand('stopRecording', 'file');\r\n this._channelService.onJitsiToggleRecordingButton(false, this.roomName);\r\n }\r\n\r\n startStream() {\r\n this.isStreaming = true;\r\n this.apiObj.executeCommand('startRecording', { mode: 'stream', youtubeStreamKey: this.channelInfo.liveStreamIngestUrl + \"/a\" });\r\n }\r\n\r\n stopStream() {\r\n this.isStreaming = false;\r\n this.apiObj.executeCommand('stopRecording', 'stream')\r\n }\r\n\r\n // NEW AUDIO/VIDEO PREVIEW HERE ... \r\n showPreview() {\r\n this.showPreviewModal = true;\r\n setTimeout(() => {\r\n this.startVideoPreview();\r\n });\r\n }\r\n\r\n hidePreview() {\r\n this.destroyVideoPreview();\r\n this.destroyAudioPreview();\r\n this.showPreviewModal = false;\r\n this.audioPreviewOn = false;\r\n this.updateLastActivity();\r\n }\r\n\r\n startVideoPreview() {\r\n // \r\n if(this.previewCurrentVideoInputId) {\r\n let constraints = { deviceId: { exact: this.previewCurrentVideoInputId } };\r\n // console.log(\"%c starting in call video preview w/ current input\", consoleLogStyle ,this.previewCurrentVideoInputId)\r\n this.initPreCallVideoPreview({ video: constraints, audio: false }, false);\r\n } else {\r\n this.initPreCallVideoPreview({ video: true, audio: false }, true);\r\n }\r\n }\r\n\r\n initPreCallVideoPreview(config:any, isInitial:boolean) {\r\n let vidEl: HTMLVideoElement = document.getElementById('videoPreviewEl-pre-join');\r\n // console.info(\"video preview element?\", vidEl)\r\n let browser = navigator;\r\n browser.getUserMedia = (browser.getUserMedia ||\r\n browser.webkitGetUserMedia ||\r\n browser.mozGetUserMedia ||\r\n browser.msGetUserMedia);\r\n // console.info(\"browser?\", browser)\r\n browser.mediaDevices.getUserMedia(config)\r\n .then((stream) => {\r\n if(isInitial) {\r\n this.getPreviewMediaDevices();\r\n }\r\n // console.info(\"user video stream?\", stream)\r\n this.previewVideoStream = stream;\r\n vidEl.srcObject = stream;\r\n this.videoPreviewOn = true;\r\n this.devicePreferences.jitsi.startWithVideoMuted = false;\r\n }).catch(err => {\r\n console.error(err.name + \": \" + err.message, err);\r\n this._toastService.error(`${err.name} : ${err.message}, you may need to reset your browser permissions. (video preview)`);\r\n });\r\n }\r\n\r\n // gets users devices & populates select inputs ... \r\n getPreviewMediaDevices() {\r\n let videoDevices = [];\r\n let audioInputDevices = [];\r\n let audioOutputDevices = [];\r\n navigator.mediaDevices.enumerateDevices()\r\n .then(devices => {\r\n devices.forEach(device => {\r\n // console.log(\"user devices enum: \",device);\r\n let option: Device = {\r\n \"deviceId\": device.deviceId,\r\n \"groupId\": device.groupId,\r\n \"kind\": device.kind,\r\n \"label\": device.label\r\n };\r\n if (device.kind === 'audioinput') {\r\n audioInputDevices.push(option);\r\n } else if (device.kind === 'audiooutput') {\r\n audioOutputDevices.push(option);\r\n } else if (device.kind === 'videoinput') {\r\n videoDevices.push(option);\r\n } else {\r\n console.log(\"Other Device: \" + device.kind + \": \" + device.label + \" id = \" + device.deviceId + \" was found.\");\r\n }\r\n });\r\n }).catch(err => {\r\n // console.log(err.name + \": \" + err.message, err)\r\n this._toastService.error(`${err.name} : ${err.message}, you may need to reset your browser permissions. (get preview devices)`);\r\n }).finally(()=> {\r\n this.previewVideoInputs = videoDevices;\r\n if(this.previewVideoInputs.length > 0) {\r\n if(!this.previewCurrentVideoInputId) {\r\n this.previewCurrentVideoInputId = this.previewVideoInputs[0].deviceId; // SET TO CURRENT FOR SELECT ... \r\n }\r\n // console.log(\"select val?\", this.vidPreSelect)\r\n } else {\r\n this._toastService.error('No camera found.')\r\n }\r\n // console.log(\"user devices video: \", this.previewVideoInputs);\r\n \r\n this.previewAudioInputs = audioInputDevices;\r\n if(this.previewAudioInputs.length > 0) {\r\n if(!this.previewCurrentAudioInputId) {\r\n this.previewCurrentAudioInputId = this.previewAudioInputs[0].deviceId;\r\n }\r\n } else {\r\n this._toastService.error('No audio input found.')\r\n }\r\n // console.log(\"user devices audio input: \", this.previewAudioInputs);\r\n \r\n this.previewAudioOutputs = audioOutputDevices;\r\n if(this.previewAudioOutputs.length > 0) {\r\n if(!this.previewCurrentAudioOutputId) {\r\n this.previewCurrentAudioOutputId = this.previewAudioOutputs[0].deviceId;\r\n }\r\n } else {\r\n // this._toastService.error('No audio output found.')\r\n console.info(\"no audio output found.\")\r\n }\r\n // console.log(\"user devices audio output: \", this.previewAudioOutputs);\r\n });\r\n }\r\n\r\n // video preview toggles\r\n videoPreviewToggle(hideVideoPreview: boolean) {\r\n // console.info(\"%c vid tog e : \", consoleLogStyle, hideVideoPreview)\r\n this.devicePreferences.jitsi.startWithVideoMuted = !hideVideoPreview;\r\n hideVideoPreview ? this.setVideoPreviewInput() : this.destroyVideoPreview();\r\n }\r\n\r\n setVideoPreviewInput() {\r\n this.destroyVideoPreview();\r\n // \r\n let constraints = { deviceId: { exact: this.previewCurrentVideoInputId } };\r\n // console.log(\"%c starting in call preview current input\", consoleLogStyle ,this.previewCurrentVideoInputId)\r\n this.initPreCallVideoPreview({video: constraints, audio: false}, false);\r\n }\r\n\r\n // cuts current VIDEO preview track ... \r\n destroyVideoPreview() {\r\n let vidEl: HTMLVideoElement = document.getElementById('videoPreviewEl-pre-join');\r\n vidEl.srcObject = null;\r\n if(this.previewVideoStream) {\r\n this.previewVideoStream.getTracks().forEach( (track) => {\r\n track.stop();\r\n });\r\n }\r\n }\r\n\r\n // audio preview toggles\r\n audioPreviewToggle(hideAudioPreview: boolean) {\r\n this.audioPreviewOn = hideAudioPreview;\r\n // console.info(\"%c audio tog e audio on? : \", consoleLogStyle, this.audioPreviewOn)\r\n this.devicePreferences.jitsi.startWithAudioMuted = !hideAudioPreview;\r\n hideAudioPreview ? this.setAudioPreviewInput() : this.destroyAudioPreview();\r\n }\r\n\r\n setAudioPreviewInput() {\r\n this.destroyAudioPreview();\r\n // \r\n let browser = navigator;\r\n browser.getUserMedia = (browser.getUserMedia ||\r\n browser.webkitGetUserMedia ||\r\n browser.mozGetUserMedia ||\r\n browser.msGetUserMedia);\r\n let constraints:any = true;\r\n if(this.previewCurrentAudioInputId) {\r\n constraints = { deviceId: { exact: this.previewCurrentAudioInputId } };\r\n }\r\n browser.mediaDevices.getUserMedia({ audio: constraints })\r\n .then((stream) => {\r\n \r\n this.previewAudioStream = stream;\r\n const audioContext = new AudioContext();\r\n // console.info(\"%c \", consoleLogStyle)\r\n \r\n this.currentMicrophoneStream = audioContext.createMediaStreamSource(stream);\r\n // console.info(\"%c mic to dissconect on hide? : \", consoleLogStyle, this.currentMicrophoneStream)\r\n \r\n this.audioAnalyzer = audioContext.createAnalyser();\r\n // console.info(\"%c analyzer? \", consoleLogStyle, this.audioAnalyzer)\r\n this.audioAnalyzer.smoothingTimeConstant = 0.8;\r\n this.audioAnalyzer.fftSize = 1024;\r\n \r\n this.currentMicrophoneStream.connect(this.audioAnalyzer);\r\n \r\n // 💡❌ replace with new AudioWorklet ... \r\n this.audioScriptProcessor = audioContext.createScriptProcessor(2048, 1, 1);\r\n // console.info(\"%c audio script proccessor \", consoleLogStyle, this.audioScriptProcessor)\r\n \r\n this.audioAnalyzer.connect(this.audioScriptProcessor);\r\n this.audioScriptProcessor.connect(audioContext.destination);\r\n \r\n this.audioScriptProcessor.onaudioprocess = () => {\r\n \r\n const array = new Uint8Array(this.audioAnalyzer.frequencyBinCount);\r\n this.audioAnalyzer.getByteFrequencyData(array);\r\n \r\n const arraySum = array.reduce((a, value) => a + value, 0);\r\n const average = arraySum / array.length;\r\n // console.info( \"%c Volume level \", consoleLogStyle, Math.round(average));\r\n \r\n this.colorBars(average);\r\n };\r\n // console.info(\"%c \", consoleLogStyle)\r\n }).catch(err => {\r\n // console.error(err.name + \": \" + err.message);\r\n this._toastService.error(`${err.name} : ${err.message}, you may need to reset your browser permissions. (audio preview)`);\r\n });\r\n }\r\n\r\n colorBars(vol:number) {\r\n const allBars = Array.from(document.getElementsByClassName('bar') as HTMLCollectionOf);\r\n const dot = document.getElementById('audio-dot');\r\n const shadow = document.getElementById('audio-bars');\r\n const numberOfBarsToColor = Math.round(vol / 10);\r\n // console.info(\"%c # of bars to color \", consoleLogStyle, numberOfBarsToColor)\r\n const barsToColor = allBars.slice(0, numberOfBarsToColor);\r\n for (const bar of allBars) {\r\n bar.style.opacity = '0';\r\n }\r\n for (const bar of barsToColor) {\r\n // console.log(bar[i]);\r\n bar.style.opacity = '1';\r\n if(numberOfBarsToColor > 9) {\r\n bar.style.backgroundColor = 'var(--new-status-red)';\r\n dot.style.backgroundColor = 'var(--new-status-red)';\r\n shadow.style.boxShadow = 'inset -0.1rem -0.1rem 0.4rem rgba(255, 0, 85, 0.8), inset 0.1rem 0.1rem 0.4rem rgba(255, 0, 85, 0.8)';\r\n } else {\r\n bar.style.backgroundColor = 'var(--caribbean-green)';\r\n dot.style.backgroundColor = 'var(--caribbean-green)';\r\n shadow.style.boxShadow = 'inset -0.1rem -0.1rem 0.4rem rgba(18, 202, 150, 0.8), inset 0.1rem 0.1rem 0.4rem rgba(18, 202, 150, 0.8)';\r\n }\r\n }\r\n }\r\n\r\n // cuts current AUDIO preview track & analyzers & processors ... \r\n destroyAudioPreview() {\r\n if(this.previewAudioStream) {\r\n this.previewAudioStream.getTracks().forEach( (track) => {\r\n track.stop();\r\n });\r\n }\r\n if(this.currentMicrophoneStream) {\r\n this.currentMicrophoneStream.disconnect();\r\n }\r\n if(this.audioAnalyzer) {\r\n this.audioAnalyzer.disconnect();\r\n }\r\n if(this.audioScriptProcessor) {\r\n this.audioScriptProcessor.disconnect();\r\n }\r\n }\r\n\r\n speakerTest() {\r\n if(this._platform.FIREFOX || this._platform.IOS || this._platform.ANDROID) {\r\n // cant set device id on Speach ... \r\n // let utterance = new SpeechSynthesisUtterance(\"Welcome to via three unity\");\r\n // window.speechSynthesis.speak(utterance);\r\n // console.info(\"%c speaker test FIREFOX\", consoleLogStyle)\r\n // 💡 audio output select is hidden on firefox, need to test safari ... \r\n const audio:HTMLMediaElement = new Audio('../../../../assets/audio/test-tone.mp3');\r\n audio.play();\r\n } else {\r\n // console.info(\"%c speaker test not FIREFOX\", consoleLogStyle, this.previewCurrentAudioOutputId)\r\n // 💡 type is needed as .setSinkId() is experimental and only works on chrome ... \r\n const audio:any = new Audio('../../../../assets/audio/test-tone.mp3');\r\n audio.setSinkId(this.previewCurrentAudioOutputId);\r\n audio.play();\r\n }\r\n }\r\n\r\n // 🚧 not done yet just for logging ...\r\n setAudioPreviewOutput() {\r\n // \r\n console.log('%c current speakers: ', consoleLogStyle, this.previewCurrentAudioOutputId)\r\n }\r\n // END NEW PRE-CALL PREVIEW ...\r\n\r\n showMoreOptions() {\r\n this.showMoreOptionsModal = true;\r\n this.updateLastActivity();\r\n }\r\n\r\n hideMoreOptions() {\r\n this.showMoreOptionsModal = false;\r\n this.updateLastActivity();\r\n }\r\n\r\n displayMoreOptions() {\r\n this.showMoreOptionsModal = this.showMoreOptionsModal ? false : true;\r\n this.updateLastActivity();\r\n }\r\n\r\n muteEveryone() {\r\n this.apiObj.executeCommand('muteEveryone');\r\n this.updateLastActivity();\r\n }\r\n\r\n getParticipants() {\r\n let participants = this.apiObj.getParticipantsInfo();\r\n this.participantsInCall = participants;\r\n this.participantsListOut.emit(this.participantsListOut);\r\n // this.showKickParticipants();\r\n // console.log(participants);\r\n }\r\n\r\n kickParticipant(participantId: string) {\r\n // console.log(participantId);\r\n this.apiObj.executeCommand('kickParticipant', participantId);\r\n this.updateLastActivity();\r\n }\r\n\r\n showKickParticipants() {\r\n this.getParticipants()\r\n this.showKickParticipantsModal = true;\r\n this.hideMoreOptions();\r\n }\r\n\r\n hideKickParticipants() {\r\n this.showKickParticipantsModal = false;\r\n }\r\n\r\n setFullScreen() {\r\n let elem: any = document.querySelector(\"#video-frame\");\r\n // let tooltips: any = document.querySelector(\".cdk-overlay-container\");\r\n if (this.isFullScreen) {\r\n this.closeFullScreen();\r\n } else {\r\n if (elem.requestFullscreen) {\r\n // tooltips.requestFullscreen();\r\n elem.requestFullscreen();\r\n this.isFullScreen = true;\r\n } else if (elem.webkitRequestFullscreen) { /* Safari */\r\n elem.webkitRequestFullscreen();\r\n this.isFullScreen = true;\r\n } else if (elem.msRequestFullscreen) { /* IE11 */\r\n elem.msRequestFullscreen();\r\n this.isFullScreen = true;\r\n } else {\r\n this._toastService.error(\"Your browser doesn't support this feature.\");\r\n this.isFullScreen = false;\r\n }\r\n this.featureList.find(item => {\r\n if (item.name === \"fullscreen\") {\r\n if (this.isFullScreen) {\r\n item.icon = \"fas fa-compress\";\r\n item.title = \"exit full screen\"\r\n } else {\r\n item.icon = \"fas fa-expand\";\r\n item.title = \"full screen\"\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n this.updateLastActivity();\r\n }\r\n\r\n closeFullScreen() {\r\n if (document.fullscreenElement) {\r\n document.exitFullscreen();\r\n this.isFullScreen = false;\r\n } else if (document['webkitExitFullscreen']) { /* Safari */\r\n document['webkitExitFullscreen']();\r\n this.isFullScreen = false;\r\n } else if (document['msExitFullscreen']) { /* IE11 */\r\n document['msExitFullscreen']();\r\n this.isFullScreen = false;\r\n } else {\r\n this._toastService.error(\"Your browser doesn't support this feature.\");\r\n this.isFullScreen = false;\r\n }\r\n this.featureList.find(item => {\r\n if (item.name === \"fullscreen\") {\r\n item.icon = \"fas fa-expand\";\r\n item.title = \"full screen\"\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n setHand() {\r\n this.apiObj.executeCommand('toggleRaiseHand');\r\n // this.handsUp = this.handsUp ? false : true;\r\n // this.featureList.find(item => {\r\n // if (item.name === \"raisehand\") {\r\n // if (this.handsUp) {\r\n // item.class = \"activated\";\r\n // } else {\r\n // item.class = \"\";\r\n // }\r\n // return true;\r\n // }\r\n // });\r\n this.updateLastActivity();\r\n }\r\n\r\n toggleVirtualBackgrounds() {\r\n this.apiObj.executeCommand('toggleVirtualBackgroundDialog');\r\n this.updateLastActivity();\r\n }\r\n\r\n openChat() {\r\n if (this.isFullScreen) {\r\n this.closeFullScreen();\r\n }\r\n this.openChatEvent.emit();\r\n this.updateLastActivity();\r\n }\r\n\r\n openUsers() {\r\n if (this.isFullScreen) {\r\n this.closeFullScreen();\r\n }\r\n this.openUsersEvent.emit();\r\n this.updateLastActivity();\r\n }\r\n\r\n openFiles() {\r\n if (this.isFullScreen) {\r\n this.closeFullScreen();\r\n }\r\n this.openFilesEvent.emit();\r\n this.updateLastActivity();\r\n }\r\n\r\n startMeeting(roomName: string, dispName: string, token: string) {\r\n let videoMuted = this.devicePreferences.jitsi.startWithVideoMuted;\r\n let audioMuted = this.devicePreferences.jitsi.startWithAudioMuted;\r\n // 🚧 add device labels from preview here ... \r\n let videoDeviceLabel: string = '';\r\n let audioInputDeviceLabel: string = '';\r\n let audioOutputDeviceLabel: string = '';\r\n // if camera selected from preview ... \r\n if(this.previewCurrentVideoInputId) {\r\n // i tried to do with selectedDevice = [].find() but came undefined ... \r\n this.previewVideoInputs.map((device:Device) => {\r\n // console.info('%c selected device ittr:::', consoleLogStyle, device.deviceId, '=?', this.previewCurrentVideoInputId)\r\n if(device.deviceId === this.previewCurrentVideoInputId) {\r\n videoDeviceLabel = device.label;\r\n // console.info('%c selected device camera? ', consoleLogStyle, videoDeviceLabel)\r\n }\r\n });\r\n }\r\n // if mic selected from input ... \r\n if(this.previewCurrentAudioInputId) {\r\n this.previewAudioInputs.map((device:Device) => {\r\n // console.info('%c selected device ittr:::', consoleLogStyle, device.deviceId, '=?', this.previewCurrentAudioInputId)\r\n if(device.deviceId === this.previewCurrentAudioInputId) {\r\n audioInputDeviceLabel = device.label;\r\n // console.info('%c selected device mic? ', consoleLogStyle, device)\r\n }\r\n });\r\n }\r\n // if speakers selected from input ... \r\n if(this.previewCurrentAudioOutputId) {\r\n this.previewAudioOutputs.map((device:Device) => {\r\n // console.info('%c selected device ittr:::', consoleLogStyle, device.deviceId, '=?', this.previewCurrentAudioOutputId)\r\n if(device.deviceId === this.previewCurrentAudioOutputId) {\r\n audioOutputDeviceLabel = device.label;\r\n // console.info('%c selected device speakers? ', consoleLogStyle, device)\r\n }\r\n });\r\n }\r\n let options = {\r\n devices: {\r\n audioInput: audioInputDeviceLabel,\r\n audioOutput: audioOutputDeviceLabel,\r\n videoInput: videoDeviceLabel\r\n },\r\n roomName: roomName,\r\n jwt: token,\r\n width: '100%',\r\n height: '100%',\r\n parentNode: document.querySelector('#jitsi-meet-conf-container'),\r\n userInfo: {\r\n displayName: dispName\r\n },\r\n configOverwrite: {\r\n doNotStoreRoom: true,\r\n startWithVideoMuted: videoMuted,\r\n startWithAudioMuted: audioMuted,\r\n enableWelcomePage: false,\r\n prejoinPageEnabled: false\r\n // disableRemoteMute: true,\r\n // remoteVideoMenu: {\r\n // disableKick: true\r\n // },\r\n },\r\n interfaceConfigOverwrite: {\r\n SHOW_JITSI_WATERMARK: false,\r\n DEFAULT_REMOTE_DISPLAY_NAME: dispName,\r\n TOOLBAR_BUTTONS: [],\r\n // TOOLBAR_BUTTONS: ['settings', 'fullscreen'],\r\n SETTINGS_SECTIONS: ['devices'],\r\n SHOW_PROMOTIONAL_CLOSE_PAGE: false,\r\n DISABLE_JOIN_LEAVE_NOTIFICATIONS: true,\r\n DEFAULT_BACKGROUND: '#474747'//Jitsi Default color\r\n },\r\n onload: () => {\r\n //alert('loaded');\r\n // let joinMsg: any = document.querySelector('#joinMsg');\r\n let container: any = document.querySelector('#container');\r\n let toolbox: any = document.querySelector('#toolbox');\r\n let conferencePage: any = document.querySelector('#videoconference_page');\r\n let btnCustomMic: any;\r\n let btnCustomCamera: any;\r\n // joinMsg.style.display = 'none';\r\n container.style.display = 'block';\r\n toolbox.style.display = 'flex';\r\n btnCustomMic = document.querySelector(\"#btnCustomMic\");\r\n btnCustomCamera = document.querySelector(\"#btnCustomCamera\");\r\n if (audioMuted) {\r\n btnCustomMic.firstChild.classList.add(\"fa-microphone-slash\");\r\n } else {\r\n btnCustomMic.firstChild.classList.add(\"fa-microphone\");\r\n }\r\n if (videoMuted) {\r\n btnCustomCamera.firstChild.classList.add(\"fa-video-slash\");\r\n } else {\r\n btnCustomCamera.firstChild.classList.add(\"fa-video\");\r\n }\r\n if (conferencePage) {\r\n conferencePage.classList.remove('subject');\r\n }\r\n }\r\n };\r\n // console.log(\"Constants.jitsiDomain\", Constants.jitsiDomain)\r\n this.apiObj = new JitsiMeetExternalAPI(Constants.jitsiDomain, options);\r\n // console.info(\"jitsi api obj >>>>>>>>>>>>>>>>>>>>\", this.apiObj)\r\n this.apiObj.addEventListeners({\r\n readyToClose: () => {\r\n //alert('going to close');\r\n let jitsiMeetConfContainer: any = document.querySelector('#jitsi-meet-conf-container')\r\n // let joinMsg: any = document.querySelector('#joinMsg');\r\n let container: any = document.querySelector('#container');\r\n let toolbox: any = document.querySelector('#toolbox');\r\n while (jitsiMeetConfContainer.firstChild) {\r\n jitsiMeetConfContainer.removeChild(jitsiMeetConfContainer.firstChild);\r\n }\r\n toolbox.style.display = 'none'\r\n container.style.display = 'none'\r\n // joinMsg.innerHTML = \"\";\r\n // joinMsg.style.display = 'block';\r\n },\r\n audioMuteStatusChanged: (data) => {\r\n let btnCustomMic: any = document.querySelector(\"#btnCustomMic\");\r\n // console.log(\"audio Change Status\", data);\r\n if (data.muted) {\r\n btnCustomMic.firstChild.classList.remove(\"fa-microphone\");\r\n btnCustomMic.firstChild.classList.add(\"fa-microphone-slash\");\r\n } else {\r\n btnCustomMic.firstChild.classList.remove(\"fa-microphone-slash\");\r\n btnCustomMic.firstChild.classList.add(\"fa-microphone\");\r\n }\r\n this.updateLastActivity();\r\n },\r\n videoMuteStatusChanged: (data) => {\r\n let btnCustomCamera: any = document.querySelector(\"#btnCustomCamera\");\r\n // console.log(\"video Change Status\", data);\r\n if (data.muted) {\r\n btnCustomCamera.firstChild.classList.remove(\"fa-video\");\r\n btnCustomCamera.firstChild.classList.add(\"fa-video-slash\");\r\n } else {\r\n btnCustomCamera.firstChild.classList.remove(\"fa-video-slash\");\r\n btnCustomCamera.firstChild.classList.add(\"fa-video\");\r\n }\r\n this.updateLastActivity();\r\n },\r\n // deviceListChanged: (data) => {\r\n // console.log(\"deviceschanges\", data);\r\n // },\r\n micError: (data) => {\r\n // console.log(data);\r\n this._toastService.error(`${data.type}: ${data.message} (microphone error)`);\r\n },\r\n audioError: (data) => {\r\n // console.log(data);\r\n this._toastService.error(`${data.type}: ${data.message} (audio error)`);\r\n },\r\n tileViewChanged: (data) => {\r\n this.featureList.find(item => {\r\n if (item.name === \"tileview\") {\r\n if (data.enabled) {\r\n item.icon = \"fa fa-grip-vertical\";\r\n item.title = \"strip view\"\r\n } else {\r\n item.icon = \"fas fa-th\";\r\n item.title = \"tile view\"\r\n }\r\n return true;\r\n }\r\n });\r\n this.updateLastActivity();\r\n },\r\n screenSharingStatusChanged: (data) => {\r\n this.featureList.find(item => {\r\n if (item.name === \"screenshare\") {\r\n if (data.on) {\r\n item.class = \"activated\";\r\n item.title = \"stop screen share\";\r\n } else {\r\n item.class = \"\";\r\n item.title = \"start screen share\";\r\n }\r\n return true;\r\n }\r\n });\r\n this.updateLastActivity();\r\n },\r\n participantJoined: (data) => {\r\n // console.log('participantJoined', data);\r\n // this.getParticipants();\r\n if (this.showKickParticipantsModal) {\r\n this.getParticipants();\r\n }\r\n },\r\n participantLeft: (data) => {\r\n // console.log('participantLeft', data);\r\n // this.getParticipants();\r\n if (this.showKickParticipantsModal) {\r\n this.getParticipants();\r\n }\r\n },\r\n participantKickedOut: (data) => {\r\n // console.log('participantKicked', data);\r\n if (this.callerId === data.id) {\r\n this.hangUp();\r\n }\r\n // this.getParticipants();\r\n if (this.showKickParticipantsModal) {\r\n this.getParticipants();\r\n }\r\n },\r\n participantRoleChanged: (data) => {\r\n // console.log(\"participantRoleChanged\", data)\r\n this.callerId = data.id;\r\n this.getParticipants();\r\n if (data.role === 'moderator') {\r\n this.isModerator = true;\r\n } else {\r\n this.isModerator = false;\r\n }\r\n },\r\n raiseHandUpdated: (data) => {\r\n this.getParticipants();\r\n let user = this.getParticipantById(data.id);\r\n // console.log(user); // was undefined at end call added the !! check here ... \r\n if(!!user) {\r\n if (data.handRaised) {\r\n this._toastService.user(user.formattedDisplayName, \" Raised their hand!\");\r\n if (this.callerId === user.participantId) {\r\n this.handsUp = true;\r\n }\r\n } else {\r\n if (this.callerId === user.participantId) {\r\n this.handsUp = false;\r\n this._toastService.user(\"You\", \" Lowered your hand.\");\r\n }\r\n }\r\n this.featureList.find(item => {\r\n if (item.name === \"raisehand\") {\r\n if (this.handsUp) {\r\n item.class = \"activated\";\r\n item.title = \"lower hand\";\r\n } else {\r\n item.class = \"\";\r\n item.title = \"raise hand\";\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n this.startCallEvent.emit();\r\n this.apiObj.executeCommand('subject', roomName);\r\n // this.apiObj.executeCommand('startRecording', { mode: 'stream', rtmpStreamKey: this.channelInfo.liveStreamIngestUrl + \"/a\" });\r\n this.inVideo = true;\r\n this.joiningCall = false;\r\n // this.getDevices(); // gets devices for settings from jitsi api ... ❌\r\n // if (this.forMedicalEMT) {\r\n if (this.preventStartVideo) {\r\n this.altHeight = true;\r\n }\r\n this._channelService.useManagerSettings = false;\r\n // \r\n this.subscriptions.push(this._authService.displayNameBehaviorSubject.pipe(filter(n => n !== ''),tap((name) => {\r\n // name \r\n this.apiObj.executeCommand('displayName', name);\r\n })).subscribe());\r\n this.subscriptions.push(this._authService.userHashBehaviorSubject.pipe(filter(h => h !== ''),tap((hash) => {\r\n // hash \r\n this.apiObj.executeCommand('avatarUrl', `https://profile-images.azureedge.us/${hash}`);\r\n })).subscribe());\r\n }\r\n\r\n getPreferences() {\r\n // console.log(\"getPreferences called\");\r\n this.devicePreferences = JSON.parse(localStorage.getItem(\"devicePreferences\"));\r\n // console.log(\"devicePreferences: \");\r\n // console.log(this.devicePreferences);\r\n if (this.devicePreferences === null) {\r\n this.devicePreferences = {\r\n \"videoId\": \"default\",\r\n \"audioId\": \"default\",\r\n \"videoRes\": 480,\r\n \"jitsi\": {\r\n \"startWithVideoMuted\": true,\r\n \"startWithAudioMuted\": false\r\n }\r\n };\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n } else if (!this.devicePreferences.jitsi) {\r\n this.devicePreferences.jitsi = {\r\n \"startWithVideoMuted\": true,\r\n \"startWithAudioMuted\": false\r\n }\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n }\r\n this.devicesReady = true;\r\n }\r\n\r\n setPreference(isCaller: any) {\r\n // console.log(\"SetPreferences Called. IsCaller:\" + isCaller);\r\n this.joiningCall = true;\r\n this.startUpHelper(isCaller);\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n }\r\n\r\n // 🚧 change devices from post-join here ... \r\n setJitsiDevices() {\r\n this.isSettingJitsiDevices = true;\r\n // 🚧 add device labels from preview here ... \r\n let videoDeviceLabel: string = '';\r\n let audioInputDeviceLabel: string = '';\r\n let audioOutputDeviceLabel: string = '';\r\n // if camera selected from preview ... \r\n if(this.previewCurrentVideoInputId) {\r\n // i tried to do with selectedDevice = [].find() but came undefined ... \r\n this.previewVideoInputs.map((device:Device) => {\r\n // console.info('%c selected device ittr:::', consoleLogStyle, device.deviceId, '=?', this.previewCurrentVideoInputId)\r\n if(device.deviceId === this.previewCurrentVideoInputId) {\r\n videoDeviceLabel = device.label;\r\n // console.info('%c selected device camera? ', consoleLogStyle, videoDeviceLabel)\r\n this.apiObj.setVideoInputDevice(videoDeviceLabel);\r\n }\r\n });\r\n }\r\n // if mic selected from input ... \r\n if(this.previewCurrentAudioInputId) {\r\n this.previewAudioInputs.map((device:Device) => {\r\n // console.info('%c selected device ittr:::', consoleLogStyle, device.deviceId, '=?', this.previewCurrentAudioInputId)\r\n if(device.deviceId === this.previewCurrentAudioInputId) {\r\n audioInputDeviceLabel = device.label;\r\n // console.info('%c selected device mic? ', consoleLogStyle, device)\r\n this.apiObj.setAudioInputDevice(audioInputDeviceLabel);\r\n }\r\n });\r\n }\r\n // if speakers selected from input ... \r\n if(this.previewCurrentAudioOutputId) {\r\n this.previewAudioOutputs.map((device:Device) => {\r\n // console.info('%c selected device ittr:::', consoleLogStyle, device.deviceId, '=?', this.previewCurrentAudioOutputId)\r\n if(device.deviceId === this.previewCurrentAudioOutputId) {\r\n audioOutputDeviceLabel = device.label;\r\n // console.info('%c selected device speakers? ', consoleLogStyle, device)\r\n this.apiObj.setAudioOutputDevice(audioOutputDeviceLabel);\r\n }\r\n });\r\n }\r\n setTimeout(() => {\r\n this.isSettingJitsiDevices = false;\r\n });\r\n }\r\n\r\n getParticipantById(id:string) {\r\n return this.participantsInCall.find(user => user.participantId === id);\r\n }\r\n\r\n // ❌❌❌💡 this is being way over called from .switch() in template ... see log ... \r\n // infinite loop ... \r\n jitsiCheck(mediaWidth: number) {\r\n // console.log(\"%c jitsi screen check fired from *ngIf \", consoleLogStyle) // comment back to see \r\n let targetWidth: any = document.getElementById(\"video-frame\");\r\n if (targetWidth) {\r\n targetWidth = targetWidth.offsetWidth;\r\n if (targetWidth < mediaWidth) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n updateLastActivity() {\r\n if (this.channelId) {\r\n this._channelService.updateLastActivity(this.channelId);\r\n }\r\n }\r\n\r\n modalClickOff(event:Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n if (value == \"participants-modal\") {\r\n this.showKickParticipantsModal = false;\r\n } else if (value == \"more-options-modal\") {\r\n this.showMoreOptionsModal = false;\r\n } else if (value == \"video-preview-modal\") {\r\n this.hidePreview();\r\n }\r\n this.updateLastActivity();\r\n }\r\n}\r\n","\r\n\t
\r\n\t\t{{joiningCall ? \"Joining...\" : \"\"}}\r\n\t
\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\tJoin Conversation\r\n\t\t\t\r\n\t\t
\r\n\t\r\n\t\r\n\r\n\t
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t
\r\n\t
\r\n\r\n\t\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
Moderator
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tMute Everyone\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tKick Participants\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{{ btn.title | titlecase }}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Device Preview

\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{ device.label }}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tNo Devices To Select From\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tSet in call devices\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tCheck for new devices\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\r\n\t\r\n\t\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Participants

\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t

{{ user.formattedDisplayName }}

\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tKick\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Constants } from '../../../constants';\r\n\r\n@Component({\r\n selector: 'app-kurento-video',\r\n templateUrl: './kurento-video.component.html',\r\n styleUrls: ['./kurento-video.component.scss']\r\n})\r\nexport class KurentoVideoComponent implements OnInit {\r\n @Input() channelId: string;\r\n @Input() userName: string;\r\n @Input() hideOnStart: boolean;\r\n @Output() endCallEvent = new EventEmitter();\r\n\r\n public iframe: any;\r\n public socketServers: any = [];\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer\r\n ) {\r\n const id_token = localStorage.getItem('oidc.user:' + Constants.stsAuthority + ':unity-web-client')\r\n const access_token = JSON.parse(id_token).access_token;\r\n\r\n if (!this.hideOnStart) {\r\n this.hideOnStart = false;\r\n }\r\n\r\n if (Constants.isProd) {\r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"https://video-app-2603-dev.twil.io?name=\" +\r\n this.userName + \"&roomname=\" + this.channelId + \"&access_token=\" + access_token);\r\n\r\n } else {\r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"https://127.0.0.1:44303?name=\" +\r\n this.userName + \"&roomname=\" + this.channelId + \"&access_token=\" + access_token);\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n\r\n}\r\n"," ","import { Component, Input, OnInit, Output, EventEmitter, Inject } from '@angular/core';\r\nimport { ChannelService } from '../../../services/channel-service';\r\n// import { Constants } from '../../../constants';\r\nimport { Subscription } from 'rxjs';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\n// import { ApiCallsService } from '../../../services/api-calls.service';\r\n// import { AuthService } from 'src/app/core/auth.service';\r\n// import { Router } from '@angular/router';\r\nimport { AppComponent } from 'src/app/app.component';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-live-streaming-video',\r\n templateUrl: './live-streaming-video.component.html',\r\n styleUrls: ['./live-streaming-video.component.scss']\r\n})\r\nexport class LiveStreamingVideoComponent implements OnInit {\r\n @Input() channelId: string;\r\n @Input() channelInfo;\r\n @Input() userName: string;\r\n @Input() forMedicalEMT: boolean;\r\n @Input() preventList: string[]; //Features To be Prevented\r\n @Input() mainChannel: boolean;\r\n @Output() endCallEvent = new EventEmitter();\r\n @Output() startCallEvent = new EventEmitter();\r\n @Output() openChatEvent = new EventEmitter();\r\n @Output() openUsersEvent = new EventEmitter();\r\n @Output() openFilesEvent = new EventEmitter();\r\n @Output() participantsListOut = new EventEmitter();\r\n\r\n public apiObj: any = null;\r\n public dispName: string = null;\r\n public roomName: string = \"\"; //meeting_id\r\n public callerId: string = null; //users participant id\r\n public jitsiToken: string = \"\";\r\n\r\n public showJoinModal: boolean = false;\r\n public showSettingsModal: boolean = false;\r\n public showMoreOptionsModal: boolean = false;\r\n public showKickParticipantsModal: boolean = false;\r\n public joingCall: boolean = false;\r\n\r\n public inVideo: boolean = true;\r\n public isRecording: boolean = false;\r\n public isStreaming: boolean = false;\r\n public disableRecording: boolean = false;\r\n public disableStreaming: boolean = false;\r\n public isFullScreen: boolean = false;\r\n public inCall: boolean = false;\r\n public handsUp: boolean = false;\r\n public isModerator: boolean = false;\r\n public participantsInCall: any = [];\r\n\r\n public devicePreferences: any = {};\r\n public devicesReady: any = false;\r\n public videoInputs: any = [];\r\n public audioInputs: any = [];\r\n public audioOutputs: any = [];\r\n public currentVideoInput: any = null;\r\n public currentAudioInput: any = null;\r\n public currentAudioOutput: any = null;\r\n\r\n //Feature List\r\n public hideStartVideo: boolean = false;\r\n public featureList: any[] = [\r\n {\r\n name: \"screenshare\",\r\n id: \"btnScreenShareCustom\",\r\n icon: \"fas fa-desktop\",\r\n title: \"screen share\",\r\n method: () => {\r\n this.screenShareCustom()\r\n }\r\n },\r\n {\r\n name: \"raisehand\",\r\n id: \"raiseHand\",\r\n icon: \"fas fa-hand-paper\",\r\n title: \"raise hand\",\r\n method: () => {\r\n this.setHand()\r\n }\r\n },\r\n {\r\n name: \"tileview\",\r\n id: \"btnCustomTileView\",\r\n icon: \"fas fa-th\",\r\n title: \"tile view\",\r\n method: () => {\r\n this.customTileView()\r\n }\r\n },\r\n {\r\n name: \"fullscreen\",\r\n id: \"btnSetFullScreen\",\r\n icon: \"fas fa-expand\",\r\n title: \"full screen\",\r\n method: () => {\r\n this.setFullScreen()\r\n }\r\n },\r\n {\r\n name: \"settings\",\r\n id: \"btnCustomSettings\",\r\n icon: \"fas fa-cog\",\r\n title: \"video settings\",\r\n method: () => {\r\n this.showSettings()\r\n }\r\n }\r\n ];\r\n\r\n //for forMedicalEMT\r\n public altHeight: boolean = false;\r\n\r\n public callId: any = null;\r\n public initiatorClientId = null;\r\n public initiatorConnectionId: any = null;\r\n public initiatorUserId: any = null;\r\n\r\n //for handling out site wide sidebar display\r\n public sidebarShowing: boolean;\r\n // public sidebarPinned: boolean;\r\n\r\n // Live Feed NDIA\r\n public loadLiveFeed: boolean;\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _toastService: ToastNotificationService,\r\n public _channelService: ChannelService,\r\n private _appComp: AppComponent,\r\n // private _authService: AuthService,\r\n // private _apiCallsService: ApiCallsService,\r\n // private _router: Router\r\n ) {\r\n if (!this.forMedicalEMT) {\r\n this.forMedicalEMT = false;\r\n }\r\n\r\n //inital set for sidebar\r\n this.sidebarShowing = this._appComp.showSidebar;\r\n // this.sidebarPinned = this._appComp.pinnedSideBar;\r\n\r\n this.subscriptions.push(this._channelService.onJoinedPageEvent$\r\n .subscribe((channelId: any) => {\r\n console.log(\"JoinedPageEvent channelID: \" + channelId);\r\n if (this.mainChannel) {\r\n this.channelId = channelId;\r\n // this.getJitsiToken(); // NDIA\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.push(this._channelService.onSelectPoliceOfficerEvent$\r\n .subscribe((channelId: any) => {\r\n console.log(\"JoinedPageEvent channelID: \" + channelId);\r\n this.channelId = channelId;\r\n // this.getJitsiToken(); // NDIA\r\n })\r\n );\r\n\r\n this.subscriptions.push(this._channelService.onJitsiCallCreatedEvent$.subscribe((callId: any) => {\r\n //console.log(\"jitsicallcreated sub\");\r\n // console.log(\"callchannelevent sub\");\r\n this.callId = callId;\r\n // this.startUp();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiCallPromptEvent$.subscribe((callObj: any) => {\r\n console.warn(\"jitsicallprompt sub\");\r\n // this.channelId = callObj.channelId;\r\n // this.roomName = callObj.channelId;\r\n this.initiatorClientId = callObj.initiatorClientId;\r\n this.initiatorConnectionId = callObj.initiatorConnectionId;\r\n this.initiatorUserId = callObj.initiatorUserId;\r\n\r\n // if (this.forMedicalEMT) {\r\n if (this.hideStartVideo) {\r\n if (false === this.inCall) {\r\n this.callId = callObj.callId;\r\n this.startUpHelper(false);\r\n }\r\n } else {\r\n //this.showJoinModal = true;\r\n }\r\n }));\r\n\r\n\r\n this.subscriptions.push(this._channelService.onJitsiToggleRecordingEvent$.subscribe((disableRecording: any) => {\r\n if (disableRecording === \"true\" || disableRecording === true) {\r\n this.isRecording = true;\r\n this.disableRecording = true;\r\n } else {\r\n this.isRecording = false;\r\n this.disableRecording = false;\r\n }\r\n console.log(\"isRecording: \" + this.isRecording);\r\n console.log(\"disableRecording: \" + this.disableRecording);\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJitsiSelfJoinEvent$.subscribe((joinChannelId: string) => {\r\n if (joinChannelId === this.channelId) {\r\n this.setPreference(true);\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onSidebarDisplayEvent$.subscribe(show => {\r\n this.sidebarShowing = show;\r\n }));\r\n\r\n // this.subscriptions.push(this._channelService.onSidebarPinEvent$.subscribe(isPinned => {\r\n // this.sidebarPinned = isPinned;\r\n // }));\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"CHANNEL INFO:\" + this.channelInfo);\r\n if (!this.userName) {\r\n this.dispName = \"New User\";\r\n } else {\r\n this.dispName = this.userName;\r\n }\r\n\r\n console.log(\"USER NAME On Init: \" + this.dispName);\r\n\r\n // this.getJitsiToken(); // NDIA\r\n\r\n // console.log(\"ngOnIt going to call getPreferences\")\r\n // this.getPreferences();\r\n if (this.preventList) {\r\n // alert(this.preventList);\r\n this.preventList.forEach(item => {\r\n if (item === 'startVideo') {\r\n this.hideStartVideo = true;\r\n } else if (item === 'record') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"record\")\r\n } else if (item === 'chat') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"chat\")\r\n } else if (item === 'users') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"users\")\r\n } else if (item === 'files') {\r\n this.featureList = this.featureList.filter(feature => feature.name != \"files\")\r\n }\r\n });\r\n }\r\n this.featureList.forEach((item, i) => {\r\n if (i === 0) {\r\n item.switch = () => {\r\n return true;\r\n };\r\n } else if (i === 1) {\r\n item.switch = () => {\r\n return this.jitsiCheck(400);\r\n };\r\n } else if (i === 2) {\r\n item.switch = () => {\r\n return this.jitsiCheck(450);\r\n };\r\n } else if (i === 3) {\r\n item.switch = () => {\r\n return this.jitsiCheck(500);\r\n };\r\n } else if (i === 4) {\r\n item.switch = () => {\r\n return this.jitsiCheck(550);\r\n };\r\n } else {\r\n item.switch = () => {\r\n return false;\r\n };\r\n }\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n startUpHelper(isCaller: any) {\r\n console.log(\"startup helper isCaller: \" + isCaller);\r\n if (!this.channelId) {\r\n this._toastService.error(\"Failed to join this call\");\r\n console.log('meeting id is missing');\r\n this.joingCall = false;\r\n } else {\r\n let joinMsg: any = document.querySelector('#joinMsg');\r\n let btnStartup: any = document.querySelector(\"#btnStartup\");\r\n joinMsg.innerHTML = \"Loading Event...\";\r\n if (btnStartup) {\r\n btnStartup.style.display = 'none';\r\n }\r\n this.roomName = this.channelId;\r\n this.loadLiveFeed = true; // NDIA\r\n this.inVideo = true; // NDIA\r\n this.devicesReady = true; //NDIA\r\n\r\n console.log(\"CHANNEL AT STARTUP: \" + this.channelId);\r\n this.showJoinModal = false;\r\n this.startMeeting(this.roomName, this.dispName, this.jitsiToken);\r\n }\r\n }\r\n\r\n hangUp() {\r\n this.loadLiveFeed = false // NDIA\r\n this.inCall = false;\r\n this.isModerator = false;\r\n let toolbox: any = document.querySelector('#toolbox');\r\n let btnStartup: any = document.querySelector(\"#btnStartup\");\r\n this.hideStartVideo = false;\r\n let joinMsg: any = document.querySelector('#joinMsg');\r\n joinMsg.innerHTML = \"\";\r\n if (!this.hideStartVideo) {\r\n this.altHeight = false;\r\n }\r\n if (btnStartup) {\r\n btnStartup.style.display = 'inline-block';\r\n }\r\n if (toolbox) {\r\n toolbox.style.display = 'none';\r\n }\r\n this.inVideo = false;\r\n // console.log(\"leaving live event\")\r\n this.endCallEvent.emit();\r\n if (this.isFullScreen) {\r\n this.closeFulllScreen();\r\n }\r\n if (this.hideStartVideo) {\r\n console.log(\"haning up emt\");\r\n this.altHeight = false;\r\n }\r\n }\r\n\r\n hangUpHelper() {\r\n if (!this.channelId) {\r\n this._toastService.error(\"Failed to leave this call\");\r\n console.log('meeting id is missing');\r\n } else {\r\n this.roomName = this.channelId;\r\n }\r\n this.hangUp();\r\n // this._channelService.JitsiHangUpUser(this.callId, this.roomName);\r\n }\r\n\r\n declineCall() {\r\n this.showJoinModal = false;\r\n this.updateLastActivity();\r\n }\r\n\r\n customMic() {\r\n // this.apiObj.executeCommand('toggleAudio');\r\n // this.updateLastActivity();\r\n }\r\n\r\n customCamera() {\r\n // this.apiObj.executeCommand('toggleVideo');\r\n // this.updateLastActivity();\r\n }\r\n\r\n customTileView() {\r\n // this.apiObj.executeCommand('toggleTileView');\r\n // this.updateLastActivity();\r\n }\r\n\r\n screenShareCustom() {\r\n // this.apiObj.executeCommand('toggleShareScreen');\r\n // this.updateLastActivity();\r\n }\r\n\r\n // Remove for NDIA livestream\r\n setVideoInput() {\r\n \r\n }\r\n\r\n // Remove for NDIA livestream \r\n setAudioInput() {\r\n \r\n }\r\n\r\n // Remove for NDIA livstream\r\n setAudioOutput() {\r\n \r\n }\r\n\r\n startStream() {\r\n this.isStreaming = true;\r\n this.apiObj.executeCommand('startRecording', { mode: 'stream', rtmpStreamKey: 123 })\r\n }\r\n\r\n stopStream() {\r\n this.isStreaming = false;\r\n this.apiObj.executeCommand('stopRecording', 'stream')\r\n }\r\n\r\n showSettings() {\r\n // this.getDevices();\r\n this.showSettingsModal = true;\r\n this.updateLastActivity();\r\n }\r\n\r\n hideSettings() {\r\n this.showSettingsModal = false;\r\n this.updateLastActivity();\r\n }\r\n\r\n hideSettingsFromModal(event) {\r\n let target = event.target || event.srcElement || event.currentTarget;\r\n let value = null;\r\n if (target.attributes.id) {\r\n let idAttr = target.attributes.id;\r\n value = idAttr.nodeValue;\r\n }\r\n\r\n if (value == \"video-setting-modal\") {\r\n this.showSettingsModal = false;\r\n }\r\n this.updateLastActivity();\r\n }\r\n\r\n showMoreOptions() {\r\n this.showMoreOptionsModal = true;\r\n this.updateLastActivity();\r\n }\r\n\r\n hideMoreOptions() {\r\n this.showMoreOptionsModal = false;\r\n this.updateLastActivity();\r\n }\r\n\r\n displayMoreOptions() {\r\n this.showMoreOptionsModal = this.showMoreOptionsModal ? false : true;\r\n this.updateLastActivity();\r\n }\r\n\r\n setDevices() {\r\n this.showSettingsModal = false;\r\n }\r\n\r\n muteEveryone() {\r\n this.apiObj.executeCommand('muteEveryone');\r\n this.updateLastActivity();\r\n }\r\n\r\n getParticipants() {\r\n // removed for NDIA\r\n }\r\n\r\n kickParticipant(participantId: string) {\r\n console.log(participantId);\r\n this.apiObj.executeCommand('kickParticipant', participantId);\r\n this.updateLastActivity();\r\n }\r\n\r\n showKickParticipants() {\r\n this.getParticipants()\r\n this.showKickParticipantsModal = true;\r\n }\r\n\r\n hideKickParticipants() {\r\n this.showKickParticipantsModal = false;\r\n }\r\n\r\n hideKickParticipantsFromModal(event) {\r\n let target = event.target || event.srcElement || event.currentTarget;\r\n let value = null;\r\n if (target.attributes.id) {\r\n let idAttr = target.attributes.id;\r\n value = idAttr.nodeValue;\r\n }\r\n\r\n if (value == \"participants-modal\") {\r\n this.showKickParticipantsModal = false;\r\n }\r\n }\r\n\r\n setFullScreen() {\r\n let elem: any = document.querySelector(\"#video-frame\");\r\n if (this.isFullScreen) {\r\n this.closeFulllScreen();\r\n } else {\r\n if (elem.requestFullscreen) {\r\n elem.requestFullscreen();\r\n this.isFullScreen = true;\r\n } else if (elem.webkitRequestFullscreen) { /* Safari */\r\n elem.webkitRequestFullscreen();\r\n this.isFullScreen = true;\r\n } else if (elem.msRequestFullscreen) { /* IE11 */\r\n elem.msRequestFullscreen();\r\n this.isFullScreen = true;\r\n } else {\r\n this._toastService.error(\"Your browser doesn't support this feature.\");\r\n this.isFullScreen = false;\r\n }\r\n this.featureList.find(item => {\r\n if (item.name === \"fullscreen\") {\r\n if (this.isFullScreen) {\r\n item.icon = \"fas fa-compress\";\r\n item.title = \"exit full screen\"\r\n } else {\r\n item.icon = \"fas fa-expand\";\r\n item.title = \"full screen\"\r\n }\r\n return true;\r\n }\r\n });\r\n }\r\n this.updateLastActivity();\r\n }\r\n\r\n closeFulllScreen() {\r\n if (document.fullscreenElement) {\r\n document.exitFullscreen();\r\n this.isFullScreen = false;\r\n } else if (document['webkitExitFullscreen']) { /* Safari */\r\n document['webkitExitFullscreen']();\r\n this.isFullScreen = false;\r\n } else if (document['msExitFullscreen']) { /* IE11 */\r\n document['msExitFullscreen']();\r\n this.isFullScreen = false;\r\n } else {\r\n this._toastService.error(\"Your browser doesn't support this feature.\");\r\n this.isFullScreen = false;\r\n }\r\n\r\n this.featureList.find(item => {\r\n if (item.name === \"fullscreen\") {\r\n item.icon = \"fas fa-expand\";\r\n item.title = \"full screen\"\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n setHand() {\r\n this.apiObj.executeCommand('toggleRaiseHand');\r\n // this.handsUp = this.handsUp ? false : true;\r\n // this.featureList.find(item => {\r\n // if (item.name === \"raisehand\") {\r\n // if (this.handsUp) {\r\n // item.class = \"activated\";\r\n // } else {\r\n // item.class = \"\";\r\n // }\r\n // return true;\r\n // }\r\n // });\r\n this.updateLastActivity();\r\n }\r\n\r\n openChat() {\r\n if (this.isFullScreen) {\r\n this.closeFulllScreen();\r\n }\r\n this.openChatEvent.emit();\r\n this.updateLastActivity();\r\n }\r\n\r\n openUsers() {\r\n if (this.isFullScreen) {\r\n this.closeFulllScreen();\r\n }\r\n this.openUsersEvent.emit();\r\n this.updateLastActivity();\r\n }\r\n\r\n openFiles() {\r\n if (this.isFullScreen) {\r\n this.closeFulllScreen();\r\n }\r\n this.openFilesEvent.emit();\r\n this.updateLastActivity();\r\n }\r\n\r\n startMeeting(roomName: string, dispName: string, token: string) {\r\n //let videoMuted = this.devicePreferences.jitsi.startWithVideoMuted; // NDIA\r\n // let audioMuted = this.devicePreferences.jitsi.startWithAudioMuted; // NDIA\r\n this.startCallEvent.emit();\r\n this.inVideo = true;\r\n this.joingCall = false;\r\n let joinMsg: any = document.querySelector('#joinMsg');\r\n joinMsg.innerHTML = \"\";\r\n \r\n if (this.hideStartVideo) {\r\n this.altHeight = true;\r\n }\r\n }\r\n\r\n getPreferences() {\r\n console.log(\"getPreferences called\");\r\n // this.devicePreferences = JSON.parse(localStorage.getItem(\"devicePreferences\"));\r\n // console.log(\"devicePreferences: \");\r\n // console.log(this.devicePreferences);\r\n if (this.devicePreferences === null) {\r\n this.devicePreferences = {\r\n \"videoId\": \"default\",\r\n \"audioId\": \"default\",\r\n \"videoRes\": 480,\r\n \"jitsi\": {\r\n \"startWithVideoMuted\": true,\r\n \"startWithAudioMuted\": true\r\n }\r\n };\r\n // localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n } else if (!this.devicePreferences.jitsi) {\r\n this.devicePreferences.jitsi = {\r\n \"startWithVideoMuted\": true,\r\n \"startWithAudioMuted\": true\r\n }\r\n // localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n }\r\n this.devicesReady = true;\r\n }\r\n\r\n setPreference(isCaller: any) {\r\n console.log(\"SetPreferences Called. IsCaller:\" + isCaller);\r\n this.joingCall = true;\r\n this.startUpHelper(isCaller);\r\n\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n }\r\n\r\n checkDevicePermissions() {\r\n // Removed for NDIA\r\n }\r\n\r\n getDevices() {\r\n let videoInputs = [];\r\n let audioInputs = [];\r\n let audioOutputs = [];\r\n\r\n let foundVideoInput = false;\r\n let foundAudioInput = false;\r\n let foundAudioOutput = false;\r\n\r\n // let selecteAudioInput = this.currentAudioInput;\r\n // let selecteVideoInput = this.currentVideoInput;\r\n // let selecteAudioOutput = this.currentAudioOutput;\r\n }\r\n\r\n getParticipantById(id) {\r\n return this.participantsInCall.find(user => user.participantId === id);\r\n }\r\n\r\n screenCheck(mediaWidth: number) {\r\n let mediaQuery = window.matchMedia(`(max-width: ${mediaWidth - 1}px)`)\r\n if (mediaQuery.matches) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n jitsiCheck(mediaWidth: number) {\r\n let targetWidth: any = document.getElementById(\"video-frame\");\r\n if (targetWidth) {\r\n targetWidth = targetWidth.offsetWidth;\r\n if (targetWidth < mediaWidth) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n\r\n clickOff() {\r\n //For On blur\r\n }\r\n\r\n updateLastActivity() {\r\n if (this.channelId) {\r\n // this._channelService.updateLastActivity(this.channelId);\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \"NDIA\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
Moderator
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Settings

\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{ device.label }}\r\n \r\n \r\n No Devices To Select From\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ device.label }}\r\n \r\n \r\n No Devices To Select From\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{ device.label }}\r\n \r\n \r\n No Devices To Select From\r\n \r\n \r\n
\r\n \r\n Check For New Devices\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Participants

\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n

{{ user.formattedDisplayName }}

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component } from \"@angular/core\";\r\n\r\n\r\n\r\n@Component({\r\n selector: \"loading-home\",\r\n templateUrl: \"./loading-home.component.html\",\r\n styleUrls: [\"./loading-home.component.scss\"],\r\n})\r\nexport class LoadingHomeComponent {\r\n // loading spinner for home page columns ...\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {\r\n Component,\r\n Inject,\r\n Input,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { MeetingEvent } from \"../../interface/meeting-event\";\r\nimport { consoleLogStyle } from '../../varaibles';\r\n\r\n\r\n@Component({\r\n selector: \"meeting-info\",\r\n templateUrl: \"./meeting-info.component.html\",\r\n styleUrls: [\"./meeting-info.component.scss\"],\r\n})\r\nexport class MeetingInfoComponent implements OnInit {\r\n \r\n @Input('meetingInfo') meetingInfo: MeetingEvent;\r\n \r\n public todaysCurrentDateTime: any = new Date();\r\n public setCurrentDateTimeInterval: any;\r\n \r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n console.log(\"%c meeting info \", consoleLogStyle, this.meetingInfo);\r\n // interval is cleared onDestroy \r\n this.setCurrentDateTimeInterval = setInterval(()=> {\r\n this.todaysCurrentDateTime = new Date().toISOString(); // so we can use math on date for comparison: todaysDate > meeting.start\r\n // console.log(\"%c Current time \", consoleLogStyle, this.todaysCurrentDateTime);\r\n }, 1000); // keep current time for to show the \"meeting in progress badge\"\r\n }\r\n\r\n handleBrokenImage(isCreator:boolean,userIdx?:number) {\r\n // console.info('yeeeeeeeeeeeeeee')\r\n if(isCreator) {\r\n this.meetingInfo.channelKeyNavigation.chatUserKeyNavigation.hash = '1';\r\n } else {\r\n this.meetingInfo.meetingAttendees[userIdx].chatUserKeyNavigation.hash = '1';\r\n }\r\n }\r\n}\r\n","\r\n
\r\n \r\n
\r\n
\r\n \r\n

{{meetingInfo.title}}

\r\n
\r\n \r\n CANCELED\r\n \r\n \r\n IN PROGRESS\r\n \r\n
\r\n \r\n
\r\n

Topic:

{{meetingInfo.body || 'none'}}\r\n
\r\n \r\n
\r\n

Channel:

\r\n {{(meetingInfo.channelKeyNavigation.type === 'quick') ? 'Quick meeting' : meetingInfo.channelKeyNavigation.name}}\r\n
\r\n \r\n
\r\n

Date:

{{meetingInfo.start + 'Z'|date:'M/d/yyyy'}}
\r\n

Time:

{{meetingInfo.start + 'Z'|date:'h:mm a'}}
\r\n

Length:

{{meetingInfo.allDay ? 'All day' : meetingInfo.duration|meetingDuration}}
\r\n
\r\n \r\n
\r\n \r\n
\r\n

Attendees:   ( {{meetingInfo.meetingAttendees.length + 1}} )

\r\n
\r\n \r\n
\r\n
\r\n \"user\"\r\n\r\n \r\n
\r\n {{meetingInfo.channelKeyNavigation.chatUserKeyNavigation.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n {{meetingInfo.channelKeyNavigation.chatUserKeyNavigation.displayName}}\r\n • Host\r\n
\r\n \r\n \r\n
\r\n
\r\n \"user\"\r\n\r\n \r\n
\r\n {{user.chatUserKeyNavigation.username|defaultImageOverlay}}\r\n
\r\n
\r\n
\r\n {{user.chatUserKeyNavigation.displayName}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, OnDestroy, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { ApiCallsService } from '../../../services/api-calls.service';\r\nimport { DocumentToSign, User } from '../../../models/models';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport * as faker from 'faker'; //For testing\r\nimport 'webrtc-adapter';\r\nimport { ChannelService } from '../../../services/channel-service';\r\nimport { constants } from 'os';\r\nimport { JsonHubProtocol } from '@microsoft/signalr';\r\nimport { connect } from 'http2';\r\nimport { ConnectionManagerService } from '../../../services/connection-manager.service';\r\nimport { AppIntakeService } from '../../../../../src/app/services/app-intake.service';\r\nimport { stringify } from 'querystring';\r\nimport { SocketsService } from 'src/app/services/sockets.service';\r\nimport { FileStorageService } from '../../../../../src/app/services/file-storage.service';\r\nimport { AuthService } from '../../../../../src/app/core/auth.service';\r\nimport { BrowserModule, DomSanitizer } from '@angular/platform-browser';\r\nimport { Constants } from '../../../constants';\r\n\r\n@Component({\r\n selector: 'app-mike-kurento',\r\n templateUrl: './mike-kurento.component.html',\r\n styleUrls: ['./mike-kurento.component.scss']\r\n})\r\n\r\nexport class MikeKurentoComponent implements OnInit, OnDestroy {\r\n // @Output() resetVideoCall = new EventEmitter();\r\n // @Output() promptVideoCall = new EventEmitter();\r\n // @Input() channelId: string;\r\n public channelInfo: any = {}\r\n //public channelId: string = \"ODudJKxlS\";\r\n public channelId: string = '';\r\n public beta1: boolean = false;\r\n public beta2: boolean = false;\r\n public beta3: boolean = false;\r\n public sub: any;\r\n public showPage: boolean = false;\r\n public username: any = '';\r\n public iframe: any;\r\n\r\n public socketServers: any = [];\r\n\r\n //temp for files\r\n public _showFiles: boolean = false\r\n public channelDisplayName: string = \"\";\r\n public downloadFile: any = {};\r\n public sharedFileListQuery: any = {};\r\n public fileList: any = [];\r\n \r\n\r\n constructor(\r\n private _route: ActivatedRoute,\r\n private _channelService: ChannelService,\r\n private _fileStorageService: FileStorageService,\r\n private _socketService: SocketsService,\r\n private _authService: AuthService,\r\n private _apiCalls: ApiCallsService,\r\n private sanitizer: DomSanitizer\r\n ) {\r\n this.getChannelId();\r\n this.getIsbeta();\r\n\r\n this._channelService.onSharedFileDeleteCompletedEvent$.subscribe(() => {\r\n this._sharedFileList();\r\n })\r\n\r\n this._channelService.onSharedFileUploadCompletedEvent$.subscribe(() => {\r\n this._sharedFileList();\r\n })\r\n\r\n this.username = this._authService._user.profile.preferred_username;\r\n\r\n\r\n\r\n\r\n if (this.beta1)\r\n {\r\n //const twilioPasscode = \"5121582603\";\r\n //this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"https://video-app-2603-dev.twil.io?passcode=\" +\r\n // twilioPasscode + \"&name=\" + this.username + \"&roomname=\" + this.channelId);\r\n\r\n const id_token = localStorage.getItem('oidc.user:' + Constants.stsAuthority + ':unity-web-client')\r\n const access_token = JSON.parse(id_token).access_token;\r\n //alert(access_token);\r\n\r\n //let tempVal = '';\r\n //for(let i=0; i < localStorage.length; i++){\r\n //\r\n // let propertyName = localStorage.key(i);\r\n //\r\n // propertyName = propertyName ? propertyName : '';\r\n //\r\n // const propertyValue = localStorage.getItem(propertyName);\r\n //\r\n // tempVal = tempVal + i + \" : \" + propertyName + \" = \" + propertyValue;\r\n //}\r\n //alert(tempVal);\r\n\r\n if (Constants.isProd) {\r\n\r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"https://video-app-2603-dev.twil.io?name=\" +\r\n this.username + \"&roomname=\" + this.channelId + \"&access_token=\" + access_token); \r\n\r\n } else {\r\n\r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"https://127.0.0.1:44303?name=\" +\r\n this.username + \"&roomname=\" + this.channelId + \"&access_token=\" + access_token);\r\n }\r\n }\r\n else if (this.beta2) {\r\n if (Constants.isProd) {\r\n \r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"../../../../assets/jitsi/meeting.html?username=\" +\r\n this.username + \"&channelname=\" + this.channelId);\r\n\r\n } else {\r\n\r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"../../../../assets/jitsi/meeting.html?username=\" +\r\n this.username + \"&channelname=\" + this.channelId);\r\n }\r\n }\r\n else if (this.beta3) {\r\n \r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"https://letsmeet.no/\" + this.channelId);\r\n }\r\n else\r\n {\r\n this.iframe = sanitizer.bypassSecurityTrustResourceUrl(\"../../../../assets/KurentoVideo/Test2.html?username=\" +\r\n this.username + \"&channelname=\" + this.channelId); \r\n }\r\n }\r\n\r\n getIsbeta() {\r\n this.sub = this._route.params.subscribe(params => {\r\n if (params['beta'] === 'beta1') {\r\n this.beta1 = true;\r\n } else if (params['beta'] === 'beta2') {\r\n this.beta2 = true;\r\n } else if (params['beta'] === 'beta3') {\r\n this.beta3 = true; \r\n } \r\n });\r\n //console.log(\"beta = \" + params['beta']); \r\n }\r\n\r\n getChannelId() {\r\n this.sub = this._route.params.subscribe(params => {\r\n this.channelId = params['channelId'];\r\n });\r\n console.log(this.channelId);\r\n }\r\n\r\n ngOnInit() {\r\n this.channelInitialize();\r\n this._getChannel();\r\n // this.promptVideoCall.emit(); \r\n }\r\n\r\n ngOnDestroy() {\r\n return this._channelService.leave(this.channelId);\r\n }\r\n\r\n _getChannel() {\r\n this._apiCalls.getChannel(this.channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.channelInfo = data.body;\r\n this._sharedFileList();\r\n this.showPage = true;\r\n } else {\r\n console.error(data.status);\r\n // alert(JSON.stringify(data.status));\r\n }\r\n });\r\n }\r\n\r\n channelInitialize() {\r\n return this._channelService.join(this.channelId);\r\n }\r\n\r\n _getActiveSocketServers(): Promise {\r\n return this._socketService.getActiveSocketServers()\r\n .toPromise()\r\n .then(data => {\r\n console.log(\"Getactivesocketservers Mike Kurento\" + JSON.stringify(data.body));\r\n this.socketServers = data.body;\r\n })\r\n .catch(err => console.error(err));\r\n }\r\n\r\n //temp files\r\n filesInit() {\r\n this.downloadFile = {\r\n \"roomOwnerUserId\": \"\",\r\n \"channelId\": \"\",\r\n \"path\": \"\",\r\n \"rev\": \"\"\r\n };\r\n }\r\n\r\n _downloadSharedFile(filePath: string, fileName: string) {\r\n this.downloadFile.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n this.downloadFile.path = filePath;\r\n this.downloadFile.channelId = this.channelInfo.channelId;\r\n // alert(JSON.stringify(this.downloadFile));\r\n this._fileStorageService.fileStorageDownloadSharedFile(this.downloadFile)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n console.log(data);\r\n // window.open(data.body, '_blank') //open\r\n this.createDownloadElement(data.body, fileName);\r\n this.filesInit();\r\n } else {\r\n alert(JSON.stringify(data));\r\n }\r\n });\r\n }\r\n\r\n createDownloadElement(link, name) {\r\n // alert(link);\r\n var element = document.createElement('a');\r\n element.setAttribute('href', link);\r\n element.setAttribute('download', link);\r\n element.setAttribute('target', '_blank');\r\n\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n\r\n element.click();\r\n\r\n document.body.removeChild(element);\r\n }\r\n\r\n _sharedFileList() {\r\n this.sharedFileListQuery.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n this.sharedFileListQuery.projectName = this.channelInfo.teamProjectKeyNavigation.name;\r\n this.sharedFileListQuery.roomName = this.channelInfo.name;\r\n this._fileStorageService.listSharedFiles(this.sharedFileListQuery)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.fileList = data.body.entries;\r\n // alert(JSON.stringify(data));\r\n } else {\r\n alert(JSON.stringify(data));\r\n }\r\n });\r\n }\r\n\r\n _softDeleteFile(filePath: string) {\r\n this._fileStorageService.softDeleteFile(filePath, this.channelInfo.channelId)\r\n .subscribe(res => {\r\n // alert(JSON.stringify(res));\r\n this._sharedFileList()\r\n });\r\n }\r\n\r\n _deleteFile(filePath: string) {\r\n console.log(filePath);\r\n this._fileStorageService.deleteFile(filePath, this.channelInfo.channelId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n // alert(JSON.stringify(res));\r\n console.log(res);\r\n this._channelService.sharedFileDeleteComplete(this.channelId);\r\n } else {\r\n alert(JSON.stringify(res));\r\n }\r\n });\r\n }\r\n\r\n showModal() {\r\n this._showFiles = (this._showFiles) ? false : true;\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n
\r\n
\r\n

Kurento Meeting

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n {{channelInfo.name}}\r\n

\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Shared files

\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n

\r\n This file list is empty.\r\n

\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n Upload File\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { BlobServiceClient, BlockBlobClient} from '@azure/storage-blob';\r\nimport { TokenCredential } from '@azure/core-http';\r\nimport { FileStorageService } from 'src/app/services/file-storage.service';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\n\r\n\r\n@Component({\r\n selector: 'profile-img-upload',\r\n templateUrl: './profile-img-upload.component.html',\r\n styleUrls: ['./profile-img-upload.component.scss']\r\n})\r\nexport class ProfileImgUploadComponent implements OnInit, OnChanges {\r\n\r\n @Input('userId') userId: string;\r\n @Output('uploadStatus') uploadStatus = new EventEmitter();\r\n @Output('createContactUploadError') createContactUploadError = new EventEmitter();\r\n\r\n // 🚧 \r\n @Input('isCustomContact') isCustomContact: boolean; // on init has val ... \r\n @Output('image') image: EventEmitter = new EventEmitter();\r\n @Input('imageToSubmit') imageToSubmit: File; // check for !! in changes ... \r\n @Input('contactId') contactId: string; // check for !! in changes ... \r\n @Output('complete') complete: EventEmitter = new EventEmitter();\r\n\r\n @Input(\"isEditContact\") isEditContact: boolean;\r\n @Output('updateComplete') updateComplete: EventEmitter = new EventEmitter();\r\n\r\n public commitInfo: any = {};\r\n public uploadFile: any = {};\r\n\r\n public blobServiceClient: BlobServiceClient;\r\n public blockBlobClient: BlockBlobClient;\r\n public baseUrl: string = '';\r\n public sasToken: TokenCredential;\r\n\r\n public fileIsUploading: boolean = false;\r\n\r\n constructor(\r\n private _toastService: ToastNotificationService,\r\n private _fileStorageService: FileStorageService,\r\n private _authService: AuthService\r\n ) { }\r\n\r\n ngOnInit() {\r\n if(!this.isCustomContact) {\r\n this.fileInit();\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.imageToSubmit || changes.contactId) {\r\n if (!!this.imageToSubmit && !! this.contactId && this.isCustomContact) {\r\n // console.log(\"%c image to submit \", consoleLogStyle, this.imageToSubmit);\r\n // upload image\r\n this.fileInit();\r\n }\r\n }\r\n }\r\n\r\n fileInit() {\r\n if(this.isCustomContact) {\r\n this.commitInfo = {\r\n \"userId\": this.contactId,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"isCustomContact\": true\r\n };\r\n this.uploadFile = this.imageToSubmit;\r\n this._fileUpload();\r\n // console.log('%c profile-img component initialized, is custom contact, commit info? ', consoleLogStyle, this.commitInfo)\r\n } else {\r\n // console.log('%c profile-img component initialized, is custom contact? ', consoleLogStyle, this.isCustomContact)\r\n this.commitInfo = {\r\n \"userId\": this.userId,\r\n \"autoRename\": false,\r\n \"mode\": \"add\",\r\n \"isCustomContact\": false\r\n };\r\n }\r\n }\r\n\r\n /*\r\n only accept { images } \r\n \r\n .png = [ 8950 ]\r\n .jpg, .jpeg = [ FFD8 ]\r\n .jpegXL = [ FF0A, 0A87 ]\r\n */\r\n\r\n // called on input change //\r\n fileName(e: Event) {\r\n const target = e.target as HTMLInputElement; // ang12 ts fix\r\n const files = target.files as FileList; // ang12 ts fix\r\n this.fileIsUploading = true;\r\n this.uploadStatus.emit(this.fileIsUploading); // emit true //\r\n // console.log('loading...', this.fileIsUploading)\r\n this.uploadFile = files[0];\r\n // \r\n let fileReader = new FileReader();\r\n fileReader.onloadend = (e: any) => {\r\n \r\n let arr = (new Uint8Array(e.target.result)).subarray(0, 2);\r\n // console.log(\"buffer array :::\", arr)\r\n let hex = \"\";\r\n for (let i = 0; i < arr.length; i++) {\r\n hex += arr[i].toString(16);\r\n }\r\n // console.log(\"file hex :::\", hex)\r\n // Check the file signature against known types\r\n let img = ['8950', 'FFD8', 'FF0A', '0A87'];\r\n \r\n if (img.includes(hex.toUpperCase())) {\r\n // console.log(\"is IMAGE :::\", hex)\r\n if(this.isCustomContact) {\r\n this.image.emit(this.uploadFile); // emit the image to Create Contact modal for preview ... \r\n this.fileIsUploading = false; \r\n this.uploadStatus.emit(this.fileIsUploading);\r\n return;\r\n } else {\r\n this._fileUpload();\r\n }\r\n } else {\r\n this.fileIsUploading = false;\r\n this.uploadStatus.emit(this.fileIsUploading);\r\n this._toastService.error(\"Can only upload Image files : .png, .jpg, .jpeg, .jfif, .jpegXL.\")\r\n return;\r\n }\r\n };\r\n fileReader.readAsArrayBuffer(this.uploadFile);\r\n }\r\n\r\n\r\n // \r\n _fileUpload() {\r\n this._fileStorageService.fileStorageProfileUpload(this.commitInfo)\r\n .subscribe(res => {\r\n if(res.status === 200) {\r\n // console.log(\"file upload res,\", res)\r\n let url = res.body.url;\r\n let hash = res.body.hash; // needed before UPDATE submition ... \r\n // console.log(\"url: \" + url);\r\n let path = `/${hash}`;\r\n let indexOfQueryStart = url.indexOf(\"?\");\r\n this.baseUrl = url.substring(0, indexOfQueryStart) + \"/\" + this.trimStart(\"/\", path);\r\n this.sasToken = url.substring(indexOfQueryStart);\r\n this.blockBlobClient = new BlockBlobClient(this.baseUrl + this.sasToken);\r\n this.uploadToBlobStorage(hash);\r\n } else {\r\n this.fileIsUploading = false;\r\n this.uploadStatus.emit(this.fileIsUploading); \r\n this.createContactUploadError.emit(this.contactId);\r\n this._toastService.error(\"There was a problem uploading your photo.\");\r\n }\r\n });\r\n }\r\n\r\n async uploadToBlobStorage(hash:string) {\r\n const content = this.uploadFile;\r\n \r\n // let uploadBlobResponse: any;\r\n try {\r\n let uploadBlobResponse: any;\r\n uploadBlobResponse = await this.blockBlobClient.upload(content, content.size);\r\n // console.log(uploadBlobResponse, 'loaded 1st ?')\r\n } catch (err) {\r\n this.fileIsUploading = false;\r\n this.uploadStatus.emit(this.fileIsUploading); \r\n this.createContactUploadError.emit(this.contactId);\r\n this._toastService.error(\"There was a problem uploading your photo.\");\r\n } finally {\r\n this.fileIsUploading = false;\r\n this.uploadStatus.emit(this.fileIsUploading);\r\n if(this.isEditContact) {\r\n this.updateComplete.emit(hash);\r\n } else {\r\n this.complete.emit(hash);\r\n this._authService.userHashBehaviorSubject.next(hash);\r\n }\r\n }\r\n // console.log(`Upload block blob ${blobName} successfully`, uploadBlobResponse.requestId)\r\n // console.log(uploadBlobResponse, 'loaded?')\r\n }\r\n\r\n\r\n trimStart(character: string, string: string) {\r\n var startIndex = 0;\r\n while (string[startIndex] === character) {\r\n startIndex++;\r\n }\r\n return string.substring(startIndex);\r\n }\r\n}\r\n","\r\n\r\n ","import { Component, OnInit, ViewChild, Output, EventEmitter, Input } from '@angular/core';\r\nimport { ApiCallsService } from '../../../services/api-calls.service';\r\n// import { DocumentToSign, User } from '../../../models/models';\r\nimport { ActivatedRoute } from '@angular/router';\r\n// import * as faker from 'faker'; //For testing\r\nimport 'webrtc-adapter';\r\nimport { ChannelService } from '../../../services/channel-service';\r\n// import { constants } from 'os';\r\n// import { JsonHubProtocol } from '@microsoft/signalr';\r\n// import { connect } from 'http2';\r\nimport { ConnectionManagerService } from '../../../services/connection-manager.service';\r\nimport { AppIntakeService } from '../../../../../src/app/services/app-intake.service';\r\n\r\n@Component({\r\n selector: 'app-rtc-video',\r\n templateUrl: './rtc-video.component.html',\r\n styleUrls: ['./rtc-video.component.css'],\r\n providers: [ConnectionManagerService]\r\n})\r\nexport class RTCVideoComponent implements OnInit {\r\n @Output() resetVideoCall = new EventEmitter();\r\n @Output() promptVideoCall = new EventEmitter();\r\n @Input() channelId: string;\r\n //private _pc1: any; //pc1Local\r\n //private _pc2: any; //pc1Remote\r\n //private _pc3: any; //pc2Local\r\n //private _pc4: any; //pc2Remote\r\n\r\n private peerConnection: any;\r\n private localVideo: any;\r\n private localStream: any;\r\n private remoteVideo: any;\r\n private uuid: any;\r\n private serverConnection: any;\r\n private offerOptions = {\r\n offerToReceiveAudio: 1,\r\n offerToReceiveVideo: 1\r\n };\r\n\r\n private _connection: any;\r\n private _localStream: any;\r\n private _localVideo: any;\r\n private _remoteVideo1: any;\r\n //private _remoteVideo2: any;\r\n private _startTime: any;\r\n private _timer: any;\r\n private _acceptingCalleeDto: any;\r\n\r\n private _offerOptions = {\r\n offerToReceiveAudio: 1,\r\n offerToReceiveVideo: 1\r\n };\r\n\r\n private _callId: any;\r\n //private _fullChannelName: any;\r\n\r\n // public testImg1 = faker.image.avatar();\r\n // public testText1 = faker.lorem.sentence();\r\n // public testFName1 = faker.name.firstName();\r\n // public testLName1 = faker.name.lastName();\r\n // public testImg2 = faker.image.avatar();\r\n // public testText2 = faker.lorem.sentence();\r\n // public testFName2 = faker.name.firstName();\r\n //public testLName2 = faker.name.lastName();\r\n\r\n public async: any;\r\n message = '';\r\n messages: string[] = [];\r\n\r\n public firstCall: boolean = true;\r\n public videoConstraints: any = {};\r\n public audioConstraints: any;\r\n //public constraints: any;\r\n public videoStream: any;\r\n public videoTracks: any;\r\n public audioTracks: any;\r\n public mainStream: any;\r\n public myStream: any;\r\n public videoSelect: any;\r\n public resolutionSelect: any;\r\n public audioSelect: any;\r\n public streamPlayer: any;\r\n\r\n public audioSet: Array = [\"up\", \"off\"];\r\n public cameraSet: Array = [\"\", \"off\"];\r\n\r\n public audioDevices: any = [];\r\n public videoDevices: any = [];\r\n public devicePreferences: any = {}\r\n\r\n public showGeneral: any;\r\n public showVideo: any;\r\n public showAudio: any;\r\n public videoSize: string;\r\n\r\n public _inCall: boolean = false;\r\n public _callFail: boolean = false;\r\n public showRequest: boolean = false;// Request Modal\r\n public showJoin: boolean = false;// Join Modal\r\n public requestSettings: boolean = false;// Shows Settings on Request/Join Modal\r\n public fullScreenMode: boolean = false;// If Video is full screen\r\n public audioPermissions: boolean = true;// False if Denied or not selected\r\n public videoPermissions: boolean = true;// False if Denied or not selected\r\n public permissionsError: boolean = false;\r\n public permissionsErrorAo: boolean = false;\r\n public streamError: any = {\r\n \"isError\": false, // True if Stream Error\r\n \"errorType\": \"\"\r\n }\r\n public _callInitalizer: any;\r\n public _initiatorClientId: any;\r\n\r\n // public officers: any = {};\r\n // public channelId: string;\r\n public _initiatorConnectionId: any;\r\n public _ice = {\r\n \"iceServers\": []\r\n };\r\n\r\n //public _ice = {\r\n // \"iceServers\": [\r\n // { \"urls\": \"stun:208.64.181.244:3478\" },\r\n // {\r\n // \"urls\": \"turn:208.64.181.244:3478?transport=udp\",\r\n // \"credential\": \"via3ice\",\r\n // \"username\": \"via3ice\"\r\n // },\r\n // {\r\n // \"urls\": \"turn:208.64.181.244:3478?transport=tcp\",\r\n // \"credential\": \"via3ice\",\r\n // \"username\": \"via3ice\"\r\n // }\r\n // ]\r\n //};\r\n\r\n constructor(\r\n private _apiCalls: ApiCallsService,\r\n private _route: ActivatedRoute,\r\n private _channelService: ChannelService,\r\n private _connectionManagerService: ConnectionManagerService,\r\n private _intakeService: AppIntakeService\r\n ) {\r\n\r\n if (this._channelService) {\r\n // this._channelService.onJoinEvent$.subscribe(() => {\r\n // console.log(\"Joined Channel \" + this.channelId);\r\n // });\r\n\r\n this._channelService.onCallChannelEvent$.subscribe((callObj: any) => {\r\n //alert(callObj.initiatorClientId)\r\n this.channelId = callObj.channelId;\r\n this._callId = callObj.callId;\r\n this._callInitalizer = callObj.caller;\r\n this._initiatorClientId = callObj.initiatorClientId;\r\n this._initiatorConnectionId = callObj.callerConnectionId;\r\n\r\n let streamType: any = document.getElementById('video-stream');\r\n if (streamType.getAttribute('stream-type') === 'a-officer') {\r\n // this.devicePrompt(false, true);\r\n this.aoDevicePrompt();\r\n // this.rtcAcceptCall(true);\r\n } else {\r\n this.showRequest = true;\r\n this.promptVideoCall.emit();\r\n }\r\n });\r\n\r\n this._channelService.onCallAcceptedEvent$.subscribe((acceptingCalleeDto: any) => {\r\n //alert(\"RtcInitiatorCallAccepted\")\r\n this.onCallAccepted(acceptingCalleeDto);\r\n });\r\n\r\n this._channelService.onDeclineCallEvent$.subscribe((userId: any) => {\r\n //only if all the users decline\r\n this._channelService.sendMessageToChannel(userId + \" has declined the call\", this.channelId);\r\n //this.HangUp();\r\n });\r\n\r\n this._channelService.onHangUpUserEvent$.subscribe(() => {\r\n console.log(\"hangupuser subscribe\");\r\n this.HangUpUser();\r\n });\r\n\r\n this._channelService.onReceiveOfferSignalEvent$.subscribe((offerObj: any) => {\r\n //alert(JSON.stringify(offerObj));\r\n console.log(\"ReceiveOfferSignalEvent rtc comp \" + JSON.stringify(offerObj.offer));\r\n //this.onReceiveOfferSignal(offerObj.callerClientId, offerObj.localDescription, offerObj.securityToken);\r\n\r\n this.gotMessageFromServer(offerObj.offer);\r\n });\r\n\r\n this._channelService.onReceiveRtcCandidateSignalEvent$.subscribe((candidateObj: any) => {\r\n console.log(\"Receive RTC Candidate Signal subscribe \" + candidateObj.candidate);\r\n //this.onReceivedCandidateSignal(candidateObj);\r\n\r\n this.gotMessageFromServer(candidateObj.candidate);\r\n });\r\n\r\n //this._channelService.onReceiveRtcAnswerSignalEvent$.subscribe((answerObj: any) => {\r\n // console.log(\"RTC receive answer signal event subscribe \" + answerObj.answer);\r\n // this.gotMessageFromServer(answerObj);\r\n //});\r\n\r\n this._channelService.onCallCreatedEvent$.subscribe((callId: any) => {\r\n this.rtcCallCreated(callId);\r\n });\r\n\r\n this._channelService.onStreamAddedEvent$.subscribe((stream: any) => {\r\n console.log(\"stream added event \" + JSON.stringify(stream));\r\n this._remoteVideo1.srcObject = stream;\r\n\r\n });\r\n\r\n this._channelService.onCallErrorEvent$.subscribe(() => {\r\n alert(\"The call you are trying to join has ended or is not currently in progress.\")\r\n });\r\n\r\n this._channelService.onRtcMaxAttendeeLimitReachedEvent$.subscribe(() => {\r\n alert(\"The call you are trying to join is full.\");\r\n });\r\n\r\n this._channelService.onRtcCallInProgressEvent$.subscribe(() => {\r\n //alert(\"Call in progress\");\r\n });\r\n\r\n this._channelService.onSelectPoliceOfficerEvent$.subscribe((selectedChannelId: any) => {\r\n //alert(\"selected officer channel id: \" + selectedChannelId);\r\n this.channelId = selectedChannelId;\r\n });\r\n\r\n this._channelService.onRtcAccepteeCallAcceptedEvent$.subscribe(() => {\r\n alert(\"rtcaccepteecallaccepted\");\r\n });\r\n\r\n this._channelService.onShowBeginCallPromptEvent$.subscribe((channelId: any) => {\r\n this.channelId = channelId;\r\n this.promptVideoCall.emit();\r\n this.showJoin = true;\r\n });\r\n\r\n this._channelService.onBroadcastEvent$.subscribe((data: any) => {\r\n console.log(\"onbroadcastevent subscribe \" + data);\r\n //alert(\"Onbroadcastevent \" + data);\r\n this.gotMessageFromServer(data.answer);\r\n });\r\n\r\n } else {\r\n alert(\"Channel Service not initialized\");\r\n }\r\n\r\n }\r\n\r\n getUserMediaSuccess(stream: any) {\r\n this.localStream = stream;\r\n this.localVideo.srcObject = stream;\r\n console.log(\"get user media success\");\r\n }\r\n\r\n BroadcastTully(isCaller: boolean, includeVideo: boolean) {\r\n\r\n console.log(\"broadcastTully isCaller: \" + isCaller);\r\n //alert(\"broadcast\");\r\n //let data = \"hello\";\r\n \r\n this.peerConnection = new RTCPeerConnection(this._ice);\r\n\r\n this.peerConnection.onicecandidate = (event) => {\r\n console.log(\"onice event\");\r\n this.gotIceCandidate(event, isCaller, this._initiatorConnectionId);\r\n }\r\n\r\n //this.peerConnection.onaddstream = (event) => {\r\n this.peerConnection.ontrack = (event) => {\r\n console.log(\"ontrack event\");\r\n this.gotRemoteStream2(event);\r\n };\r\n this.peerConnection.addStream(this._localStream);\r\n\r\n //if (isCaller) {\r\n // this.peerConnection.createOffer()\r\n // .then((description) => {\r\n // this.createdDescription(description);\r\n // })\r\n // .catch(this.errorHandler);\r\n //}\r\n\r\n //this._channelService.broadcast(data, this.channelId);\r\n }\r\n\r\n gotMessageFromServer(message: any) {\r\n if (!this.peerConnection) this.BroadcastTully(false, true);\r\n //console.log(\"gotMessageFromServer: \" + JSON.stringify(message)[2]);\r\n //console.log(\"gotMessageFromServer: \" + JSON.stringify(message)[3]);\r\n console.log(\"gotMessageFromServer: \" + message);\r\n console.log(\"gotMessageFromServer: \" + JSON.stringify(message));\r\n //var signal = JSON.parse(JSON.stringify(message));\r\n if (message) {\r\n var signal = JSON.parse(message);\r\n } else {\r\n console.log(\"Got message from server error \" + JSON.stringify(message));\r\n }\r\n\r\n if (signal.sdp) {\r\n console.log(\"signal.sdp\");\r\n this.peerConnection.setRemoteDescription(new RTCSessionDescription(signal.sdp)).then(() => {\r\n console.log(\"setremotedescription\");\r\n // Only create answers in response to offers\r\n if (signal.sdp.type == 'offer') {\r\n console.log(\"signal.type.offer\");\r\n this.peerConnection.createAnswer()\r\n .then((answer) => {\r\n console.log(\"signal.type.answer\");\r\n this.createdDescription(answer, this._initiatorConnectionId);\r\n })\r\n .catch((e) => {\r\n this.errorHandler(e);\r\n });\r\n }\r\n }).catch(this.errorHandler);\r\n } else if (signal.ice) {\r\n console.log(\"signal.type.ice\")\r\n this.peerConnection.addIceCandidate(new RTCIceCandidate(signal.ice)).catch(this.errorHandler);\r\n }\r\n }\r\n\r\n gotIceCandidate(event: any, isCaller: boolean, connectionId: any) {\r\n if (event.candidate != null) {\r\n console.log(\"goticecandidate connectionId: \" + connectionId);\r\n this._channelService.RTCSendCandidateSignal(connectionId, \"123456\", JSON.stringify({ 'ice': event.candidate }), this.channelId);\r\n }\r\n }\r\n\r\n createdDescription(description: any, connectionId: any) {\r\n console.log('got description ' + JSON.stringify(description));\r\n\r\n this.peerConnection.setLocalDescription(description).then(() => {\r\n\r\n console.log(\"createdDescription \" + JSON.stringify(this.peerConnection.localDescription));\r\n\r\n if (description.type == \"offer\") {\r\n this._channelService.RTCSendOfferSignal(connectionId, JSON.stringify({ 'sdp': this.peerConnection.localDescription }), this.channelId);\r\n }\r\n\r\n else if (description.type == \"answer\") {\r\n this._channelService.RTCSendAnswerSignal(this._initiatorConnectionId, JSON.stringify({ 'sdp': this.peerConnection.localDescription }), \"123456\", this.channelId);\r\n }\r\n }).catch((e) => {\r\n this.errorHandler(e);\r\n });\r\n }\r\n\r\n gotRemoteStream2(event: any) {\r\n //alert('got remote stream');\r\n console.log(\"got remote stream \" + JSON.stringify(event));\r\n this._remoteVideo1.srcObject = event.streams[0];\r\n }\r\n\r\n errorHandler(error: any) {\r\n console.log(error);\r\n }\r\n\r\n displayTimer = async () => {\r\n if (true === this._inCall) {\r\n // later record end time\r\n var now = Math.floor(Date.now() / 1000);\r\n\r\n // time difference in ms\r\n var timeDiff = now - this._startTime;\r\n\r\n // get seconds\r\n var seconds = Math.round(timeDiff % 60);\r\n seconds = this.padTime(seconds);\r\n\r\n // remove seconds from the date\r\n timeDiff = Math.floor(timeDiff / 60);\r\n\r\n // get minutes\r\n var minutes = Math.round(timeDiff % 60);\r\n minutes = this.padTime(minutes);\r\n\r\n // remove minutes from the date\r\n timeDiff = Math.floor(timeDiff / 60);\r\n\r\n // get hours\r\n var hours = Math.round(timeDiff % 24);\r\n\r\n // remove hours from the date\r\n timeDiff = Math.floor(timeDiff / 24);\r\n\r\n // the rest of timeDiff is number of days\r\n var days = timeDiff;\r\n\r\n if (days < 1) {\r\n document.getElementById(\"call-timer\").innerHTML = hours + \":\" + minutes + \":\" + seconds;\r\n } else {\r\n document.getElementById(\"call-timer\").innerHTML = days + \" days, \" + hours + \":\" + minutes + \":\" + seconds;\r\n }\r\n var t = setTimeout(this.displayTimer, 1000);\r\n }\r\n\r\n }\r\n\r\n padTime(i) {\r\n if (i < 10) {\r\n i = \"0\" + i; // add zero in front of numbers < 10\r\n }\r\n return i;\r\n }\r\n\r\n timer() {\r\n this._startTime = Math.floor(Date.now() / 1000);\r\n this.displayTimer();\r\n }\r\n\r\n hideTimer = async () => {\r\n document.getElementById(\"call-timer\").innerHTML = \"\";\r\n }\r\n\r\n aoDevicePrompt() {\r\n if (!this.audioPermissions || !this.videoPermissions) {\r\n this.permissionsErrorAo = true;\r\n this.checkDevices(true, true)\r\n } else {\r\n this.permissionsErrorAo = false;\r\n this.rtcAcceptCall(true)\r\n }\r\n }\r\n\r\n devicePrompt(callClick, includeVideo) {\r\n if (!this.audioPermissions) {\r\n this.permissionsError = true;\r\n this.checkDevices(includeVideo, true);\r\n } else if (!this.videoPermissions && includeVideo) {\r\n this.permissionsError = true;\r\n this.checkDevices(true, true);\r\n } else {\r\n this.permissionsError = false;\r\n if (callClick) {\r\n this.Call_Click(includeVideo);\r\n } else {\r\n this.rtcAcceptCall(includeVideo)\r\n }\r\n }\r\n }\r\n\r\n Call_Click = async (includeVideo: any) => {\r\n // alert(\"call click \" + this.channelId);\r\n this.showJoin = false;\r\n this.streamError.isError = false;\r\n console.log(\"CallHelper\");\r\n\r\n try {\r\n let constraints = this.getConstraints(includeVideo);\r\n if (navigator.mediaDevices.getUserMedia) {\r\n await navigator.mediaDevices.getUserMedia(constraints)\r\n .then((stream) => {\r\n console.log(\"Successful getUserMedia\");\r\n\r\n //this._localVideo.srcObject = stream;\r\n this._localStream = stream;\r\n this.videoTracks = this._localStream.getVideoTracks();\r\n this.audioTracks = this._localStream.getAudioTracks();\r\n\r\n //this._connectionManagerService.initialize(this.setIceCandidates(), this._localStream, this.channelId);\r\n\r\n this._channelService.rtcCallChannel(includeVideo, this.channelId);\r\n\r\n //this._inCall = true;\r\n this._localVideo.srcObject = this._localStream;\r\n\r\n //this.timer();\r\n this.setMediaDevices()\r\n })\r\n .catch((err) => {\r\n this.errorCallback(err, constraints.video.width.ideal, constraints.video.height.ideal);\r\n this._callFail = true;\r\n });\r\n } else {\r\n this.streamError.isError = true;\r\n this.streamError.errorType = \"no-compatibility\";\r\n }\r\n // event.target.disabled = true;\r\n // alert(JSON.stringify(stream.getTracks);\r\n } catch (event) {\r\n this.handleError(event);\r\n }\r\n }\r\n\r\n async rtcAcceptCall(includeVideo: boolean) {\r\n this.showRequest = false;\r\n this.streamError.isError = false;\r\n\r\n try {\r\n let streamType: any = document.getElementById('video-stream');\r\n if (streamType.getAttribute('stream-type') === 'a-officer') {\r\n this.streamPlayer.style.minHeight = \"calc(100vh - 12rem)\";\r\n }\r\n //alert(this.channelId);\r\n // console.log(\"rtcacceptcall\");\r\n\r\n if (!this.audioPermissions || !this.videoPermissions) {\r\n this.checkDevices(includeVideo, true);\r\n }\r\n let constraints = this.getConstraints(includeVideo);\r\n if (navigator.mediaDevices) {\r\n await navigator.mediaDevices.getUserMedia(constraints)\r\n .then((stream) => {\r\n console.log(\"Successful getUserMedia\");\r\n this.showRequest = false;\r\n\r\n //this._localVideo.srcObject = stream;\r\n this._localStream = stream;\r\n this.videoTracks = this._localStream.getVideoTracks();\r\n this.audioTracks = this._localStream.getAudioTracks();\r\n\r\n //this._connectionManagerService.initialize(this.setIceCandidates(), this._localStream, this.channelId);\r\n\r\n this._inCall = true;\r\n this._localVideo.srcObject = this._localStream;\r\n\r\n //alert(this.channelId);\r\n //alert(this._initiatorClientId);\r\n console.log(\"callInititiatorConnectionId: \" + this._initiatorConnectionId + \" includeVideo:\" + includeVideo + \" channelId: \" + this.channelId + \" callInitializer: \" + JSON.stringify(this._callInitalizer.userId) + \" initiatorClientId: \" + this._initiatorClientId);\r\n this._channelService.rtcAcceptCall(includeVideo, this.channelId, this._callId, this._callInitalizer, this._initiatorClientId, this._initiatorConnectionId);\r\n\r\n this.timer();\r\n\r\n this.setMediaDevices()\r\n })\r\n .catch((err) => {\r\n this.errorCallback(err, constraints.video.width.ideal, constraints.video.height.ideal);\r\n this._callFail = true;\r\n });\r\n } else {\r\n this.streamError.isError = true;\r\n this.streamError.errorType = \"no-compatibility\";\r\n }\r\n // event.target.disabled = true;\r\n // alert(JSON.stringify(stream.getTracks);\r\n } catch (event) {\r\n this.handleError(event);\r\n }\r\n }\r\n\r\n rtcDeclineCall = () => {\r\n //alert(this._initiatorClientId);\r\n this._channelService.rtcDeclineCall(this.channelId, this._callId, this._initiatorClientId);\r\n\r\n this.streamError = {\r\n \"isError\": false,\r\n \"errorType\": \"\"\r\n }\r\n this.showRequest = false;\r\n this.showJoin = false;\r\n this._callFail = false;\r\n this.resetVideoCall.emit();\r\n }\r\n\r\n onReceiveOfferSignal = async (callerClientId: any, localDescription: any, securityToken: any) => {\r\n try {\r\n //alert(\"onreceiveoffersignal\");\r\n console.log(\"onreceiveoffersignal\");\r\n this._connectionManagerService.newSignal(callerClientId, localDescription, securityToken);\r\n } catch (event) {\r\n this.handleError(event);\r\n }\r\n }\r\n\r\n// methods shouldnt need public/private \r\n //public setVideo = async (localDescription: any) => {\r\n // this.videoTracks = this._localStream.getVideoTracks();\r\n // this.audioTracks = this._localStream.getAudioTracks();\r\n\r\n // var localDescriptionParsed = JSON.parse(localDescription);\r\n\r\n // console.log(\"new signal \" + JSON.stringify(localDescriptionParsed.sdp));\r\n\r\n // //if (localDescriptionParsed.sdp) {\r\n // console.log(\"new signal\");\r\n // //todo: check to see if media stream is instantiated\r\n\r\n // //this.receivedSdpSignal(connection, callerClientId, localDescription.sdp, mediaStream, securityToken);\r\n\r\n // let configuration = this.setIceCandidates();\r\n\r\n // let pc0 = new RTCPeerConnection(null);\r\n // //pc0.onicecandidate(this.onIceCandidate(pc0, e));\r\n\r\n // pc0.onicecandidate = (e) => {\r\n // //todo: send candidates up to channel hub, add partnerClientId\r\n\r\n // ////this._channelService.RTCSendCandidateSignal(partnerClientId, securityToken,\r\n // //// JSON.stringify({ \"candidate\": e.candidate }), this._fullChannelName);\r\n\r\n // //this._channelService.RTCSendCandidateSignal(JSON.stringify({ \"candidate\": e.candidate }), channelName);\r\n // //this.onIceCandidate(pc0, e);\r\n // //alert(JSON.stringify(e));\r\n\r\n // //console.log(JSON.stringify(pc));\r\n // //try {\r\n // // //await (pc.addIceCandidate(new RTCIceCandidate(event.candidate)));\r\n // // await(this._connection.addIceCandidate(e.candidate));\r\n // // console.log(`${pc} addIceCandidate success`);\r\n // //} catch (err) {\r\n // // console.log(`${pc} failed to add ICE Candidate: ${err.toString()}`);\r\n // //}\r\n // //console.log(`${pc} ICE candidate:\\n${e.candidate ? event.e.candidate : '(null)'}`);\r\n // }\r\n // pc0.addEventListener('icecandidate', e => this.onIceCandidate(pc0, e));\r\n // pc0.addEventListener('iceconnectionstatechange', e => this.onIceStateChange(pc0, e));\r\n // pc0.addEventListener('track', e => this.gotRemoteStream(e));\r\n // this._localStream.getTracks().forEach(track => pc0.addTrack(track, this._localStream));\r\n\r\n // console.log('pc0 setRemoteDescription start');\r\n // try {\r\n // await pc0.setRemoteDescription(localDescriptionParsed.sdp);\r\n // this.onSetRemoteSuccess(pc0);\r\n // } catch (e) {\r\n // this.onSetSessionDescriptionError(e);\r\n // }\r\n\r\n // console.log('pc2 createAnswer start');\r\n // try {\r\n // const answer = await pc0.createAnswer();\r\n // await this.onCreateAnswerSuccess(answer, pc0);\r\n // } catch (e) {\r\n // this.onCreateSessionDescriptionError(e);\r\n // }\r\n\r\n // //} else {\r\n // //this.receivedCandidateSignal(connection, callerClientId, localDescription.candidate);\r\n // //}\r\n //}\r\n\r\n //public receivedSdpSignal = async (connection, callerClientId, sdp, securityToken) => {\r\n // //create a remote peer connection\r\n // let configuration = this._ice;\r\n // this._pc1 = new RTCPeerConnection(configuration);\r\n // this._pc1.addEventListener('iceconnectionstatechange', e => this.onIceStateChange(this._pc1, e));\r\n // this._pc1.addEventListener('icecandidate', e => this.onIceCandidate(this._pc1, e));\r\n // this._localStream.getTracks().forEach(track => this._pc1.addTrack(track, this._localStream));\r\n\r\n // //set remote description equal to sdp\r\n\r\n // console.log('pc1 setRemoteDescription start');\r\n // try {\r\n // await this._pc1.setRemoteDescription(sdp);\r\n // this.onSetRemoteSuccess(this._pc1);\r\n // } catch (e) {\r\n // this.onSetSessionDescriptionError(e);\r\n // }\r\n // //create answer\r\n // // use the answer's local description to create a local peer connection\r\n // console.log('pc2 createAnswer start');\r\n // try {\r\n // const answer = await this._pc2.createAnswer();\r\n // await this.onCreateAnswerSuccess(answer);\r\n // } catch (e) {\r\n // this.onCreateSessionDescriptionError(e);\r\n // }\r\n\r\n // //make a call to send the answer's local description to the caller\r\n // //caller will use this description as it's remote description\r\n\r\n //}\r\n\r\n onReceivedCandidateSignal = (candidateObj: any) => {\r\n //set ice candidate\r\n console.log(\"onreceivedcandidatesignal \" + JSON.stringify(candidateObj.candidate));\r\n if (!candidateObj.candidate.sdp) {\r\n let candidateParsed = JSON.parse(candidateObj.candidate);\r\n console.log(\"received candidate signal \" + JSON.stringify(candidateParsed));\r\n\r\n this._connectionManagerService.newSignal(candidateObj.clientId, candidateObj.candidate, candidateObj.securityToken)\r\n }\r\n }\r\n\r\n onReceiveAnswerSignal = (answerObj: any) => {\r\n console.log(\"onreceivedanswersignal \" + JSON.stringify(answerObj.answer));\r\n this._connectionManagerService.newSignal(answerObj.clientId, answerObj.answer, answerObj.securityToken);\r\n }\r\n\r\n //WebRTC\r\n\r\n errorCallback = (error: any, videoWidth: any, videoHeight: any) => {\r\n if (\r\n error.name === \"ConstraintNotSatisfiedError\" ||\r\n error.name === \"OverconstrainedError\"\r\n ) {\r\n console.log(error.name);\r\n console.error(\"The resolution \" + videoWidth + \"x\" +\r\n videoHeight + \" px is not supported by your device.\");\r\n this.streamError.isError = true;\r\n this.streamError.errorType = \"overconstrain\";\r\n } else if (\r\n error.name === \"NotAllowedError\" ||\r\n error.name === \"PermissionDismissedError\" ||\r\n error.name === \"PermissionDeniedError\"\r\n ) {\r\n console.error(\"Permissions have not been granted to use your camera and \" + \"microphone, you need to allow the page access to your devices in \" + \"order for the video call to work.\");\r\n this.streamError.isError = true;\r\n this.streamError.errorType = \"no-permissions\";\r\n } else if (\r\n error.name === \"NotFoundError\" ||\r\n error.name === \"DevicesNotFoundError\" ||\r\n error.name === \"TypeError\"\r\n ) {\r\n //todo: display webcam something went wrong message to user\r\n console.error(error.name + \" : \" + error.message);\r\n this.streamError.isError = true;\r\n this.streamError.errorType = \"no-video-audio\";\r\n } else if (\r\n error.name === \"NotReadableError\" ||\r\n error.name === \"TrackStartError\"\r\n ) {\r\n //todo: display webcam something went wrong message to user\r\n console.error(error.name + \" : \" + error.message + \", your device might be in use a a seperate program\");\r\n this.streamError.isError = true;\r\n this.streamError.errorType = \"no-device-available\";\r\n } else {\r\n console.error(\"Failed to get hardware access! Do you have another \" +\r\n \"browser type open and using your cam/mic? You were not connected to the \" +\r\n \"server. Actual Error: \" + error);\r\n this.streamError.isError = true;\r\n this.streamError.errorType = \"unknown\";\r\n }\r\n }\r\n\r\n async onCallAccepted(acceptingCalleeDto: any) {\r\n //alert(JSON.stringify(acceptingCalleeDto));\r\n //alert(\"call initiator call accepted\");\r\n this._acceptingCalleeDto = acceptingCalleeDto;\r\n\r\n // this.setIceCandidates();\r\n this.peerConnection = new RTCPeerConnection(this._ice);\r\n\r\n this.peerConnection.onicecandidate = (event) => {\r\n console.log(\"onice event\");\r\n this.gotIceCandidate(event, false, this._acceptingCalleeDto.calleeConnectionId);\r\n }\r\n\r\n //this.peerConnection.onaddstream = (event) => {\r\n this.peerConnection.ontrack = (event) => {\r\n console.log(\"ontrack event\");\r\n this.gotRemoteStream2(event);\r\n };\r\n\r\n this.peerConnection.addStream(this._localStream);\r\n\r\n this.peerConnection.createOffer()\r\n .then((description) => {\r\n this.createdDescription(description, acceptingCalleeDto.calleeConnectionId);\r\n })\r\n .catch(this.errorHandler);\r\n\r\n this.timer();\r\n }\r\n\r\n handleError(error) {\r\n if (error.name === 'ConstraintNotSatisfiedError') {\r\n this.errorMsg('Resolution not Found', null);\r\n } else if (error.name === 'PermissionDeniedError') {\r\n this.errorMsg('Permissions have not been granted to use your camera and ' +\r\n 'microphone, you need to allow the page access to your devices in ' +\r\n 'order for the demo to work.', null);\r\n }\r\n this.errorMsg(`getUserMedia error: ${error.name}`, error);\r\n }\r\n\r\n errorMsg(msg, error) {\r\n const errorElement = document.querySelector('#errorMsg');\r\n errorElement.innerHTML += `

${msg}

`;\r\n if (typeof error !== 'undefined') {\r\n console.error(error);\r\n }\r\n }\r\n\r\n //Stream Settings\r\n switchAudio(value: any) {\r\n this.devicePreferences.audioId = value;\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n // let constraints = this._connectionManagerService.setConstraints(true, this.devicePreferences.videoId, this.videoConstraints.height, this.videoConstraints.width, this.devicePreferences.audioId)\r\n // this._localVideo.srcObject.applyConstraints(constraints)\r\n // .catch(err => {\r\n // console.error(err);\r\n // });\r\n }\r\n\r\n // private switchAudio(constraints: any) {\r\n // this.audioTracks.forEach(function (track) {\r\n // track.stop();\r\n // })\r\n // if (constraints.audio != false) {\r\n // constraints.audio = {\r\n // deviceId: { exact: this.audioSelect.value }\r\n // };\r\n // this.Call();\r\n // } else {\r\n // constraints.audio = {\r\n // deviceId: { exact: this.audioSelect.value }\r\n // };\r\n // }\r\n // }\r\n\r\n switchVideo(value: any) {\r\n this.devicePreferences.videoId = value;\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n // let constraints = this._connectionManagerService.setConstraints(true, this.devicePreferences.videoId, this.videoConstraints.height, this.videoConstraints.width, this.devicePreferences.audioId)\r\n // this._localVideo.srcObject.applyConstraints(constraints)\r\n // .catch(err => {\r\n // console.error(err);\r\n // });\r\n }\r\n\r\n // private switchVideo(constraints: any) {\r\n // // if (this.videoTracks) {\r\n // this.videoTracks.forEach(function (track) {\r\n // track.stop();\r\n // });\r\n // if (constraints.video != false) {\r\n // constraints.video = {\r\n // deviceId: { exact: this.videoSelect.value },\r\n // width: { exact: this.videoConstraints.width },\r\n // height: { exact: this.videoConstraints.height }\r\n // };\r\n // this.Call();\r\n // } else {\r\n // constraints.video = {\r\n // deviceId: { exact: this.videoSelect.value },\r\n // width: { exact: this.videoConstraints.width },\r\n // height: { exact: this.videoConstraints.height }\r\n // };\r\n // }\r\n // // } else {\r\n // // //TODO: Figure out error -- Joe\r\n // // }\r\n // }\r\n\r\n switchResolution(value: any) {\r\n console.log(value);\r\n if (value === \"2160\") {\r\n this.devicePreferences.videoRes = 2160;\r\n } else if (value === \"1440\") {\r\n this.devicePreferences.videoRes = 1440;\r\n } else if (value === \"1080\") {\r\n this.devicePreferences.videoRes = 1080;\r\n } else if (value === \"720\") {\r\n this.devicePreferences.videoRes = 720;\r\n } else if (value === \"480\") {\r\n this.devicePreferences.videoRes = 480;\r\n } else {\r\n this.devicePreferences.videoRes = 240;\r\n }\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n console.log(\"video resolution set\");\r\n }\r\n\r\n //Stream Controls\r\n audio() {\r\n if (this.audioSet[1] === 'off') {\r\n this.audioSet = [\"off\", \"on\"];\r\n this.audioTracks.forEach(function (track) {\r\n track.enabled = false;\r\n });\r\n } else {\r\n this.audioSet = [\"up\", \"off\"];\r\n this.audioTracks.forEach(function (track) {\r\n track.enabled = true;\r\n });\r\n }\r\n }\r\n\r\n // public audio(constraints: any) {\r\n // if (this.audioSet[1] === 'off') {\r\n // this.audioSet = [\"off\", \"on\"];\r\n // constraints.audio = false;\r\n // this.audioTracks.forEach(function (track) {\r\n // track.stop();\r\n // })\r\n // } else {\r\n // this.audioSet = [\"up\", \"off\"];\r\n // constraints.audio = {\r\n // deviceId: { exact: this.audioSelect.value }\r\n // };\r\n // this.CallChannel(event);\r\n // }\r\n // }\r\n\r\n camera() {\r\n if (this._localVideo.srcObject) {\r\n if (this.cameraSet[1] === \"off\") {\r\n this.cameraSet = [\"-off\", \"on\"];\r\n this.videoTracks.forEach(function (track) {\r\n track.enabled = false;\r\n });\r\n } else {\r\n this.cameraSet = [\"\", \"off\"];\r\n this.videoTracks.forEach(function (track) {\r\n track.enabled = true;\r\n });\r\n }\r\n }\r\n }\r\n\r\n // public camera(constraints: any) {\r\n // // console.log(constraints)\r\n // // if (constraints) {\r\n // if (this.cameraSet[1] === \"off\") {\r\n // this.cameraSet = [\"-off\", \"on\"];\r\n // constraints.video = false;\r\n // this.videoTracks.forEach(function (track) {\r\n // track.stop();\r\n // });\r\n // // this.video.srcObject = null;\r\n // } else {\r\n // this.cameraSet = [\"\", \"off\"];\r\n // constraints.video = {\r\n // deviceId: { exact: this.videoSelect.value }\r\n // };\r\n // // this.CallChannel(event);\r\n // }\r\n // // } else {\r\n // // //TODO: Figure out error -- Joe\r\n // // }\r\n // }\r\n\r\n settings() {\r\n let att = document.getElementsByClassName(\"stream-bar-overlay\")[0];\r\n if (att.getAttribute(\"s-settings\") === \"inactive\") {\r\n att.setAttribute(\"s-settings\", \"active\")\r\n } else {\r\n att.setAttribute(\"s-settings\", \"inactive\")\r\n }\r\n }\r\n\r\n fullscreen() {\r\n let elem = this.streamPlayer;\r\n if (elem.requestFullscreen) {\r\n elem.requestFullscreen();\r\n } else if (elem.mozRequestFullScreen) { /* Firefox */\r\n elem.mozRequestFullScreen();\r\n } else if (elem.webkitRequestFullscreen) { /* Chrome, Safari and Opera */\r\n elem.webkitRequestFullscreen();\r\n } else if (elem.msRequestFullscreen) { /* IE/Edge */\r\n elem.msRequestFullscreen();\r\n }\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n // } else if (document.mozCancelFullScreen) { /* Firefox */\r\n // document.mozCancelFullScreen();\r\n // } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */\r\n // document.webkitExitFullscreen();\r\n // } else if (document.msExitFullscreen) { /* IE/Edge */\r\n // document.msExitFullscreen();\r\n // }\r\n }\r\n this.showFullScreen();\r\n }\r\n\r\n\r\n showSettings(val: number) {\r\n this.showGeneral.style.display = 'none';\r\n this.showVideo.style.display = 'none';\r\n this.showAudio.style.display = 'none';\r\n\r\n if (val === 3) {\r\n this.showAudio.style.display = 'block';\r\n } else if (val === 2) {\r\n this.showVideo.style.display = 'block';\r\n } else {\r\n this.showGeneral.style.display = 'block';\r\n }\r\n }\r\n\r\n timerShow(check) {\r\n let timer: any = document.getElementById('call-timer')\r\n let checkbox = check.currentTarget;\r\n if (checkbox.checked) {\r\n timer.style.display = \"block\"\r\n // timer.style.color = \"red\"\r\n } else {\r\n timer.style.display = \"none\";\r\n // timer.style.color = \"blue\"\r\n }\r\n }\r\n\r\n //public async onIceCandidate2(pc, event) {\r\n // try {\r\n // await (this.getOtherPc2(pc).addIceCandidate(event.candidate));\r\n // this.onAddIceCandidateSuccess2(pc);\r\n // } catch (e) {\r\n // this.onAddIceCandidateError2(pc, e);\r\n // }\r\n // console.log(`${this.getName2(pc)} ICE candidate:\\n${event.candidate ? event.candidate.candidate : '(null)'}`);\r\n //}\r\n\r\n //public onAddIceCandidateSuccess2(pc) {\r\n // console.log(`${this.getName2(pc)} addIceCandidate success`);\r\n //}\r\n\r\n //public onAddIceCandidateError2(pc, error) {\r\n // console.log(`${this.getName2(pc)} failed to add ICE Candidate: ${error.toString()}`);\r\n //}\r\n\r\n onIceStateChange(pc, event) {\r\n if (pc) {\r\n console.log(`${pc} ICE state: ${pc.iceConnectionState}`);\r\n console.log('ICE state change event: ', event);\r\n }\r\n }\r\n\r\n //public onIceStateChange2(pc, event) {\r\n // if (pc) {\r\n // console.log(`${this.getName2(pc)} ICE state: ${pc.iceConnectionState}`);\r\n // console.log('ICE state change event: ', event);\r\n // }\r\n //}\r\n\r\n //public getName(pc) {\r\n // return (pc === this._pc1) ? 'pc1' : 'pc2';\r\n //}\r\n\r\n //public getName2(pc) {\r\n // return (pc === this._pc3) ? 'pc3' : 'pc4';\r\n //}\r\n\r\n //public getOtherPc(pc) {\r\n // return (pc === this._pc1) ? this._pc2 : this._pc1;\r\n //}\r\n\r\n //public getOtherPc2(pc) {\r\n // return (pc === this._pc3) ? this._pc4 : this._pc3;\r\n //}\r\n\r\n // public gotRemoteStream(e) {\r\n // console.log(\"remote video: \" + JSON.stringify(this._remoteVideo1));\r\n // if (this._remoteVideo1.srcObject !== e.streams[0]) {\r\n // this._remoteVideo1.srcObject = e.streams[0];\r\n // console.log('pc2 received remote stream');\r\n // }\r\n // }\r\n\r\n //public gotRemoteStream2(e) {\r\n // console.log(\"remote video: \" + this._remoteVideo2);\r\n // if (this._remoteVideo2.srcObject !== e.streams[0]) {\r\n // this._remoteVideo2.srcObject = e.streams[0];\r\n // console.log('pc4 received remote stream');\r\n // }\r\n //}\r\n\r\n onCreateSessionDescriptionError(error) {\r\n console.log(`Failed to create session description: ${error.toString()}`);\r\n }\r\n\r\n onSetLocalSuccess(pc) {\r\n console.log(`${pc} setLocalDescription complete`);\r\n }\r\n\r\n //public onSetLocalSuccess2(pc) {\r\n // console.log(`${this.getName2(pc)} setLocalDescription complete`);\r\n //}\r\n\r\n onSetRemoteSuccess(pc) {\r\n console.log(`${pc} setRemoteDescription complete`);\r\n }\r\n\r\n //public onSetRemoteSuccess2(pc) {\r\n // console.log(`${this.getName2(pc)} setRemoteDescription complete`);\r\n //}\r\n\r\n onSetSessionDescriptionError(error) {\r\n console.log(`Failed to set session description: ${error.toString()}`);\r\n }\r\n\r\n async onCreateAnswerSuccess(desc: any, pc0: any) {\r\n console.log(`Answer from pc2:\\n${desc.sdp}`);\r\n console.log('pc2 setLocalDescription start');\r\n try {\r\n await pc0.setLocalDescription(desc);\r\n this.onSetLocalSuccess(pc0);\r\n } catch (e) {\r\n this.onSetSessionDescriptionError(e);\r\n }\r\n //--console.log('pc1 setRemoteDescription start');\r\n //--try {\r\n //-- await this._pc1.setRemoteDescription(desc);\r\n //-- this.onSetRemoteSuccess(this._pc1);\r\n //--} catch (e) {\r\n //-- this.onSetSessionDescriptionError(e);\r\n //--}\r\n }\r\n\r\n //public async onCreateAnswerSuccess2(desc) {\r\n // console.log(`Answer from pc4:\\n${desc.sdp}`);\r\n // console.log('pc4 setLocalDescription start');\r\n // try {\r\n // await this._pc4.setLocalDescription(desc);\r\n // this.onSetLocalSuccess2(this._pc4);\r\n // } catch (e) {\r\n // this.onSetSessionDescriptionError(e);\r\n // }\r\n // console.log('pc3 setRemoteDescription start');\r\n // try {\r\n // await this._pc3.setRemoteDescription(desc);\r\n // this.onSetRemoteSuccess2(this._pc3);\r\n // } catch (e) {\r\n // this.onSetSessionDescriptionError(e);\r\n // }\r\n //}\r\n\r\n //public async onCreateOfferSuccess2(desc) {\r\n // console.log(`Offer from pc3\\n${desc.sdp}`);\r\n // console.log('pc3 setLocalDescription start');\r\n // try {\r\n // await this._pc3.setLocalDescription(desc);\r\n // this.onSetLocalSuccess2(this._pc3);\r\n // } catch (e) {\r\n // this.onSetSessionDescriptionError(e);\r\n // }\r\n\r\n // console.log('pc4 setRemoteDescription start');\r\n // try {\r\n // await this._pc4.setRemoteDescription(desc);\r\n // this.onSetRemoteSuccess2(this._pc4);\r\n // } catch (e) {\r\n // this.onSetSessionDescriptionError(e);\r\n // }\r\n\r\n // console.log('pc4 createAnswer start');\r\n // // Since the 'remote' side has no media stream we need\r\n // // to pass in the right constraints in order for it to\r\n // // accept the incoming offer of audio and video.\r\n // try {\r\n // const answer = await this._pc4.createAnswer();\r\n // await this.onCreateAnswerSuccess2(answer);\r\n // } catch (e) {\r\n // this.onCreateSessionDescriptionError(e);\r\n // }\r\n //}\r\n\r\n setIceCandidates() {\r\n this._connectionManagerService.getIceSettings()\r\n .subscribe(data => {\r\n let iceServer;\r\n\r\n //console.log(\"GetIceSettings \" + JSON.stringify(data.body));\r\n data.body.forEach((ice) => {\r\n console.log(JSON.stringify(ice));\r\n if (ice.type.toLowerCase() === \"stun\") {\r\n iceServer = {\r\n \"url\": \"stun:\" + ice.ipAddress + \":\" + ice.port\r\n };\r\n } else {\r\n iceServer = {\r\n \"url\": \"turn:\" + ice.ipAddress + \":\" + ice.port + ice.queryString,\r\n \"credential\": ice.credential,\r\n \"username\": ice.username\r\n };\r\n }\r\n\r\n this._ice.iceServers.push(iceServer);\r\n })\r\n //return this._ice;\r\n })\r\n }\r\n\r\n //private setIceCandidates() {\r\n // let ice = {\r\n // \"iceServers\": [\r\n // { \"urls\": \"stun:208.64.181.244:3478\" },\r\n // {\r\n // \"urls\": \"turn:208.64.181.244:3478?transport=udp\",\r\n // \"credential\": \"via3ice\",\r\n // \"username\": \"via3ice\"\r\n // },\r\n // {\r\n // \"urls\": \"turn:208.64.181.244:3478?transport=tcp\",\r\n // \"credential\": \"via3ice\",\r\n // \"username\": \"via3ice\"\r\n // }\r\n // ]\r\n // };\r\n // console.log(\"Ice: \" + JSON.stringify(ice));\r\n // return ice;\r\n //}\r\n\r\n getConstraints(includeVideo: boolean) { \r\n console.log(\"setting constraints\");\r\n let constraints = this._connectionManagerService.setConstraints(includeVideo, this.devicePreferences.videoId, this.videoConstraints.height, this.videoConstraints.width, this.devicePreferences.audioId);\r\n\r\n if (constraints.audio) {\r\n this.audioSet = [\"up\", \"off\"];\r\n } else {\r\n this.audioSet = [\"off\", \"on\"];\r\n }\r\n\r\n if (constraints.video) {\r\n this.cameraSet = [\"\", \"off\"];\r\n } else {\r\n this.cameraSet = [\"-off\", \"on\"];\r\n }\r\n return constraints;\r\n }\r\n\r\n async Call() {\r\n console.log(\"Call\");\r\n this._inCall = true;\r\n this._startTime = window.performance.now();\r\n this.videoTracks = this._localStream.getVideoTracks();\r\n this.audioTracks = this._localStream.getAudioTracks();\r\n\r\n //let configuration = this.setIceCandidates();\r\n //let configuration = { sdpSemantics: \"unified-plan\" };\r\n //let configuration = { sdpSemantics: \"plan-b\" };\r\n this._connection = new RTCPeerConnection(null);\r\n this._connection.addEventListener('icecandidate', e => this.onIceCandidate(this._connection, e));\r\n\r\n\r\n //--this._pc2 = new RTCPeerConnection(configuration);\r\n //--this._pc2.addEventListener('icecandidate', e => this.onIceCandidate(this._pc2, e));\r\n\r\n this._connection.addEventListener('iceconnectionstatechange', e => this.onIceStateChange(this._connection, e));\r\n //--this._pc2.addEventListener('iceconnectionstatechange', e => this.onIceStateChange(this._pc2, e));\r\n //--this._pc2.addEventListener('track', e => this.gotRemoteStream(e));\r\n\r\n this._localStream.getTracks().forEach(track => this._connection.addTrack(track, this._localStream));\r\n //this._pc3 = new RTCPeerConnection(configuration);\r\n //this._pc4 = new RTCPeerConnection(configuration);\r\n //this._pc3.addEventListener('icecandidate', e => this.onIceCandidate2(this._pc3, e));\r\n //this._pc4.addEventListener('icecandidate', e => this.onIceCandidate2(this._pc4, e));\r\n\r\n //this._pc3.addEventListener('iceconnectionstatechange', e => this.onIceStateChange2(this._pc3, e));\r\n //this._pc4.addEventListener('iceconnectionstatechange', e => this.onIceStateChange2(this._pc4, e));\r\n //this._pc4.addEventListener('track', e => this.gotRemoteStream2(e));\r\n\r\n\r\n //this._localStream.getTracks().forEach(track => this._pc3.addTrack(track, this._localStream));\r\n\r\n\r\n //--try {\r\n //-- console.log('pc1 createOffer start');\r\n //-- const offer = await this._pc1.createOffer(this._offerOptions);\r\n //-- await this.onCreateOfferSuccess(offer);\r\n //--} catch (e) {\r\n //-- this.onCreateSessionDescriptionError(e);\r\n //--}\r\n\r\n //try {\r\n // console.log('pc3 createOffer start');\r\n // const offer = await this._pc3.createOffer(this._offerOptions);\r\n // await this.onCreateOfferSuccess2(offer);\r\n //} catch (e) {\r\n // this.onCreateSessionDescriptionError(e);\r\n //}\r\n }\r\n\r\n setDOMVariables() {\r\n this._localVideo = document.querySelector(\"#my-stream\");\r\n this._localVideo.muted = true;\r\n this._remoteVideo1 = document.querySelector(\"#main-stream\");\r\n //this._remoteVideo2 = document.querySelector(\"#remoteVideo2\");\r\n\r\n\r\n this.streamPlayer = document.querySelector(\"#stream-player\");\r\n this.audioSelect = document.querySelector(\"select#audioSource\");\r\n this.videoSelect = document.querySelector(\"select#videoSource\");\r\n this.resolutionSelect = document.querySelector(\"select#videoResolution\");\r\n\r\n this.initalConstraints();\r\n }\r\n\r\n initalConstraints() {\r\n this.devicePreferences = JSON.parse(localStorage.getItem(\"devicePreferences\"));\r\n\r\n if (this.devicePreferences === null) {\r\n this.devicePreferences = {\r\n \"videoId\": \"default\",\r\n \"audioId\": \"default\",\r\n \"videoRes\": 480\r\n };\r\n localStorage.setItem(\"devicePreferences\", JSON.stringify(this.devicePreferences));\r\n }\r\n\r\n if (this.devicePreferences.videoRes === 2160) {\r\n this.videoConstraints.width = 3840;\r\n this.videoConstraints.height = 2160;\r\n } else if (this.devicePreferences.videoRes === 1440) {\r\n this.videoConstraints.width = 2560;\r\n this.videoConstraints.height = 1440;\r\n } else if (this.devicePreferences.videoRes === 1080) {\r\n this.videoConstraints.width = 1920;\r\n this.videoConstraints.height = 1080;\r\n } else if (this.devicePreferences.videoRes === 720) {\r\n this.videoConstraints.width = 1280;\r\n this.videoConstraints.height = 720;\r\n } else if (this.devicePreferences.videoRes === 480) {\r\n this.videoConstraints.width = 640;\r\n this.videoConstraints.height = 480;\r\n } else {\r\n this.videoConstraints.width = 320;\r\n this.videoConstraints.height = 240;\r\n }\r\n\r\n console.log(this.devicePreferences);\r\n this.setMediaDevices();\r\n }\r\n\r\n checkDevices(videoBool: boolean, audioBool: boolean) {\r\n const constraints = {\r\n video: videoBool,\r\n audio: audioBool\r\n };\r\n navigator.mediaDevices.getUserMedia(constraints)\r\n .then(() => {\r\n this.setMediaDevices();\r\n })\r\n .catch(err => {\r\n console.log(err.name + \": \" + err.message);\r\n });\r\n }\r\n\r\n setMediaDevices() {\r\n let videoDevices = [];\r\n let audioDevices = [];\r\n let videoId = this.devicePreferences.videoId;\r\n let audioId = this.devicePreferences.audioId;\r\n this.videoPermissions = true;\r\n this.audioPermissions = true;\r\n navigator.mediaDevices.enumerateDevices()\r\n .then(devices => {\r\n devices.forEach(device => {\r\n console.log(device);\r\n let option = {\r\n \"deviceId\": device.deviceId,\r\n \"groupId\": device.groupId,\r\n \"kind\": device.kind,\r\n \"label\": device.label\r\n };\r\n\r\n if (device.kind === 'audioinput') {\r\n if (device.label == \"\") {\r\n this.audioPermissions = false;\r\n // if (this.streamError.errorType === \"\") {\r\n // this.streamError.errorType = \"no-audio-permissions\";\r\n // }\r\n // } else {\r\n // if (this.streamError.errorType === \"no-audio-permissions\") {\r\n // this.streamError.errorType = \"\";\r\n // }\r\n }\r\n audioDevices.push(option);\r\n } else if (device.kind === 'videoinput') {\r\n if (device.label == \"\") {\r\n this.videoPermissions = false;\r\n // if (this.streamError.errorType === \"\") {\r\n // this.streamError.errorType = \"no-video-permissions\";\r\n // }\r\n // } else {\r\n // if (this.streamError.errorType === \"no-video-permissions\") {\r\n // this.streamError.errorType = \"\";\r\n // }\r\n }\r\n videoDevices.push(option);\r\n } else {\r\n console.log(\"Other Device: \" + device.kind + \": \" + device.label +\r\n \" id = \" + device.deviceId + \" was found\");\r\n }\r\n });\r\n\r\n if (videoDevices.length > 0) {\r\n if (this.streamError.errorType === \"no-video\") {\r\n this.streamError.errorType = \"\";\r\n } else if (this.streamError.errorType === \"no-video-audio\") {\r\n this.streamError.errorType = \"no-audio\";\r\n }\r\n if (videoDevices.some(device => device.deviceId === videoId)) {\r\n console.log(\"video is here\");\r\n videoDevices.sort((x, y) => { return x.deviceId == videoId ? -1 : y.deviceId == videoId ? 1 : 0; });\r\n } else {\r\n console.log(\"video is not here\");\r\n this.devicePreferences.videoId = videoDevices[0].deviceId;\r\n }\r\n } else {\r\n this.videoPermissions = false;\r\n if (this.streamError.errorType === \"\") {\r\n this.streamError.errorType = \"no-video\";\r\n } else if (this.streamError.errorType === \"no-audio\") {\r\n this.streamError.errorType = \"no-video-audio\";\r\n }\r\n }\r\n\r\n if (audioDevices.length > 0) {\r\n if (this.streamError.errorType === \"no-audio\") {\r\n this.streamError.errorType = \"\";\r\n } else if (this.streamError.errorType === \"no-video-audio\") {\r\n this.streamError.errorType = \"no-video\";\r\n }\r\n if (audioDevices.some(device => device.deviceId === audioId)) {\r\n console.log(\"audio is here\");\r\n audioDevices.sort((x, y) => { return x.deviceId == audioId ? -1 : y.deviceId == audioId ? 1 : 0; });\r\n } else {\r\n console.log(\"audio is not here\");\r\n this.devicePreferences.audioId = audioDevices[0].deviceId;\r\n // console.log(this.devicePreferences.audioId);\r\n }\r\n } else {\r\n this.audioPermissions = false;\r\n if (this.streamError.errorType === \"\") {\r\n this.streamError.errorType = \"no-audio\";\r\n } else if (this.streamError.errorType === \"no-video\") {\r\n this.streamError.errorType = \"no-video-audio\";\r\n }\r\n }\r\n // console.log(\"Stream Errors: \" + this.streamError.errorType)\r\n })\r\n .catch(err => {\r\n console.log(err.name + \": \" + err.message);\r\n });\r\n this.videoDevices = videoDevices;\r\n this.audioDevices = audioDevices;\r\n\r\n\r\n //// For Reference\r\n // navigator.mediaDevices.enumerateDevices()\r\n // .then(function (devices) {\r\n // devices.forEach(function (device) {\r\n // const option = document.createElement('option');\r\n // option.value = device.deviceId;\r\n // console.log(device);\r\n // if (device.kind === 'audioinput') {\r\n // let audioSelect = document.querySelector(\"select#audioSource\");\r\n // option.text = device.label;\r\n // audioSelect.appendChild(option);\r\n // } else if (device.kind === 'videoinput') {\r\n // let videoSelect = document.querySelector(\"select#videoSource\");\r\n // option.text = device.label;\r\n // videoSelect.appendChild(option);\r\n // } else {\r\n // console.log(\"Other Device: \" + device.kind + \": \" + device.label +\r\n // \" id = \" + device.deviceId + \" was found\");\r\n // }\r\n // });\r\n // })\r\n // .catch(function (err) {\r\n // console.log(err.name + \": \" + err.message);\r\n // });\r\n }\r\n\r\n setVideoSize() {\r\n let vidCount = document.getElementById('caller-views').childElementCount;\r\n if (vidCount <= 3) {\r\n this.videoSize = \"three-max\";\r\n } else if (vidCount > 3 && vidCount <= 5) {\r\n this.videoSize = \"five-max\";\r\n } else {\r\n this.videoSize = \"no-max\";\r\n }\r\n\r\n this.showGeneral = document.getElementById('gen-settings');\r\n this.showVideo = document.getElementById('vid-settings');\r\n this.showAudio = document.getElementById('aud-settings');\r\n\r\n this.showGeneral.style.display = 'block';\r\n this.showVideo.style.display = 'none';\r\n this.showAudio.style.display = 'none';\r\n }\r\n\r\n async HangUpUser() {\r\n let streamType: any = document.getElementById('video-stream');\r\n //alert(streamType.getAttribute('stream-type') === 'a-officer');\r\n if (streamType.getAttribute('stream-type') === 'a-officer') {\r\n this.streamPlayer.style.minHeight = 0;\r\n }\r\n //alert(\"hangup user\");\r\n this.hideTimer();\r\n this.streamError = {\r\n \"isError\": false,\r\n \"errorType\": \"\"\r\n }\r\n this._inCall = false;\r\n this._callFail = false;\r\n\r\n if (this._localStream) {\r\n this._localStream.getTracks().forEach(track => track.stop());\r\n this._localStream = null;\r\n this._localVideo.srcObject = null;\r\n }\r\n\r\n if (this._remoteVideo1.srcObject) {\r\n this._remoteVideo1.srcObject.getTracks().forEach(track => track.stop());\r\n }\r\n this._remoteVideo1.srcObject = null;\r\n\r\n if (this.peerConnection) {\r\n this.peerConnection.close();\r\n this.peerConnection = null;\r\n }\r\n\r\n //if (this._pc1) {\r\n // this._pc1.close();\r\n // this._pc1 = null;\r\n //}\r\n //if (this._pc2) {\r\n // this._pc2.close();\r\n // this._pc2 = null;\r\n //}\r\n //if (this._pc3) { \r\n // this._pc3.close();\r\n // this._pc3 = null;\r\n //}\r\n //if (this._pc4) {\r\n // this._pc4.close();\r\n // this._pc4 = null;\r\n //}\r\n this.resetVideoCall.emit();\r\n\r\n if (this.fullScreenMode) {\r\n this.showFullScreen();\r\n }\r\n }\r\n\r\n HangUpHelper() {\r\n //alert(this.channelId + \" \" + this._callId);\r\n this._channelService.rtcHangUpUser(this.channelId, this._callId);\r\n }\r\n\r\n async onCreateOfferSuccess(desc: any, pc0: any) {\r\n console.log(`Offer from pc1\\n${desc.sdp}`);\r\n console.log('pc1 setLocalDescription start');\r\n\r\n try {\r\n await pc0.setLocalDescription(desc).then(() => {\r\n this.onSetLocalSuccess(pc0);\r\n this._channelService.RTCSendOfferSignal(this._acceptingCalleeDto.clientId, JSON.stringify({ \"sdp\": desc }), this.channelId);\r\n }).catch((e) => {\r\n console.error(\"Error: \" + e);\r\n });\r\n\r\n } catch (e) {\r\n this.onSetSessionDescriptionError(e);\r\n }\r\n\r\n //--console.log('pc2 setRemoteDescription start');\r\n //--try {\r\n //-- await this._pc2.setRemoteDescription(desc);\r\n //-- this.onSetRemoteSuccess(this._pc2);\r\n //--} catch (e) {\r\n //-- this.onSetSessionDescriptionError(e);\r\n //--}\r\n\r\n //--console.log('pc2 createAnswer start');\r\n // Since the 'remote' side has no media stream we need\r\n // to pass in the right constraints in order for it to\r\n // accept the incoming offer of audio and video.\r\n //--try {\r\n //-- const answer = await this._pc2.createAnswer();\r\n //-- await this.onCreateAnswerSuccess(answer);\r\n //--} catch (e) {\r\n //-- this.onCreateSessionDescriptionError(e);\r\n //--}\r\n }\r\n\r\n async onIceCandidate(pc: any, event: any) {\r\n //console.log(JSON.stringify(pc));\r\n try {\r\n //await (pc.addIceCandidate(new RTCIceCandidate(event.candidate)));\r\n await (pc.addIceCandidate(event.candidate));\r\n console.log(`${pc} addIceCandidate success`);\r\n } catch (e) {\r\n console.log(`${pc} failed to add ICE Candidate: ${e.toString()}`);\r\n }\r\n console.log(`${pc} ICE candidate:\\n${event.candidate ? event.candidate.candidate : '(null)'}`);\r\n }\r\n\r\n rtcCallCreated(callId: any) {\r\n //alert(\"rtcCallCreated callId: \" + callId);\r\n this._inCall = true;\r\n this._localVideo.srcObject = this._localStream;\r\n this._callId = callId;\r\n //this.timer();\r\n }\r\n\r\n showJoinModal() {\r\n this.showJoin = (this.showJoin) ? false : true;\r\n }\r\n\r\n showRequestSettings() {\r\n this.requestSettings = (this.requestSettings) ? false : true;\r\n }\r\n\r\n showFullScreen() {\r\n this.fullScreenMode = (this.fullScreenMode) ? false : true;\r\n }\r\n\r\n ngOnInit() {\r\n this.setIceCandidates();\r\n this.setDOMVariables();\r\n this.setVideoSize();\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-stream-errors',\r\n templateUrl: './stream-errors.component.html',\r\n styleUrls: ['./stream-errors.component.scss']\r\n})\r\nexport class StreamErrorsComponent implements OnInit {\r\n@Input() errorType: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output, OnDestroy, Inject } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { Constants, ConstantsLocal } from '../../../constants';\r\nimport * as moment from 'moment';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { MeetingService } from 'src/app/services/meeting.service';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { ChannelSelected } from '../../../helpers/channel-selected.validator';\r\nimport { Subscription } from 'rxjs';\r\nimport { ContactsService } from 'src/app/services/contacts.service';\r\nimport { consoleLogStyle } from '../../varaibles';\r\nimport { MeetingEvent } from '../../interface/meeting-event';\r\nimport { ChannelFull } from '../../interface/channel-full';\r\nimport { MatSlideToggleChange } from \"@angular/material/slide-toggle\";\r\n\r\n// interface ChannelObj {\r\n// channelId?: string;\r\n// name?: string;\r\n// }\r\n\r\ninterface AttendeeStandBy {\r\n type: string;\r\n attendeeId?: string;\r\n userInfo?: any;\r\n}\r\n\r\n@Component({\r\n selector: 'schedule-meeting',\r\n templateUrl: './schedule-meeting.component.html',\r\n styleUrls: ['./schedule-meeting.component.scss']\r\n})\r\nexport class ScheduleMeetingComponent implements OnInit, OnDestroy {\r\n\r\n @Input('isEditChannel') isEditChannel: boolean;\r\n @Input('isEditQuick') isEditQuick: boolean;\r\n @Input('incomingMeetingId') incomingMeetingId: string;\r\n @Input('incomingChannelObject') incomingChannelObject: ChannelFull;\r\n\r\n @Output('formTouchedEvent') formTouchedEvent = new EventEmitter();\r\n @Output('onCompleteEvent') onCompleteEvent = new EventEmitter();\r\n\r\n public meetingId: string;\r\n public selectedChannelId: string;\r\n public meetingInfo: MeetingEvent = {};\r\n public meetingForm: FormGroup;\r\n public privateMeeting: boolean = true;\r\n public showMeetingType: boolean = false;\r\n public lockChannel: boolean = false;\r\n public formTouched: boolean = false;\r\n\r\n public todaysDate: Date = new Date();\r\n public maxScheduleDate: Date = new Date(2050, 0, 0);\r\n public selectSchedule: any = {};\r\n\r\n // guest invite forms\r\n public inviteDisplay: string = \"contacts\";\r\n\r\n public addSMS: boolean = false;\r\n public listItemSMS: string = \"\";\r\n public listSMS: any = [];\r\n\r\n public addEmail: boolean = false;\r\n public listItemEmail: string = \"\";\r\n public listEmail: any = [];\r\n\r\n public manageUsers: boolean = false;\r\n public meetingAttendees: any[] = [];\r\n public searchTenantUsersList: any = [];\r\n public searchChannelUsersList: any = [];\r\n public searchContactUsersList: any = [];\r\n public inviteTenantUsersList: any = [];\r\n public inviteChannelUsersList: any = [];\r\n public inviteContactUsersList: any = [];\r\n public attendeeStandBylist: AttendeeStandBy[] = [];\r\n // public attendeeStandByObject: any = {\r\n // channel: [],\r\n // tenant: [],\r\n // contact: [],\r\n // email: [],\r\n // sms: []\r\n\r\n // };\r\n\r\n public scheduleError: boolean = false; // true when schedule is past Date \r\n public createLock: boolean = false; // sets loading spinner\r\n public isDropdownOpen: boolean = false;\r\n\r\n public channelList: any[] = [];\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _toastService: ToastNotificationService,\r\n private _chManageService: ProjectChannelService,\r\n private _contactsService: ContactsService,\r\n private _meetingService: MeetingService,\r\n private _channelService: ChannelService,\r\n private _apiCalls: ApiCallsService,\r\n private _formBuilder: FormBuilder, //Import for Forms\r\n public _authService: AuthService,\r\n ) {\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"cancelMeetingModal\") {\r\n console.log(\"%c meeting to cancel?\", consoleLogStyle)\r\n this.cancelMeeting(data.checkboxConfirm);\r\n }\r\n }));\r\n }\r\n\r\n ngOnInit(): void {\r\n // console.log(\"---------------------\")\r\n // console.log(\"isEditChannel\", this.isEditChannel)\r\n // console.log(\"isEditQuick\", this.isEditQuick)\r\n // console.log(\"incomingMeetingId\", this.incomingMeetingId)\r\n // console.log(\"incomingChannelObject\", this.incomingChannelObject)\r\n // console.log(\"---------------------\")\r\n if (this.isEditChannel || this.isEditQuick) {\r\n if (this.incomingMeetingId && this.incomingMeetingId !== '') {\r\n this.meetingId = this.incomingMeetingId;\r\n // this.newMeetingForm();//prevent form load error\r\n this._getMeeting();\r\n } else {\r\n this._toastService.error(\"Could not find Meeting\");\r\n }\r\n } else {\r\n // if (this.incomingChannelObject && this.incomingChannelObject !== {}) {\r\n if (this.incomingChannelObject) {\r\n this.datesInit();\r\n this.selectedChannelId = this.incomingChannelObject.channelId;\r\n this.newMeetingForm('channel', this.incomingChannelObject.channelId);\r\n this.onFormChange();\r\n this.lockChannel = true;\r\n } else {\r\n this.showMeetingType = true;\r\n this.datesInit();\r\n this.newMeetingForm('quick');\r\n this.onFormChange();\r\n this.getChannels();\r\n \r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // console.log(\"In destroy\")\r\n // if (this.manageUsers) {\r\n // console.log(\"manageUSers is true\");\r\n // console.log(this.meetingId);\r\n // console.log(this.selectedChannelId);\r\n this._channelService.updateUpcomingMeetingsList(this.meetingId, false, this.selectedChannelId);\r\n // }\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n private _getMeeting() {\r\n this._meetingService.getMeeting(this.meetingId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.meetingInfo = res.body;\r\n // console.log(this.meetingInfo)\r\n this.selectedChannelId = this.meetingInfo.\r\n channelKeyNavigation.channelId;\r\n this.editMeetingInit();\r\n } else {\r\n // console.log(res);\r\n this._toastService.error(\"Could not find Meeting\");\r\n }\r\n });\r\n }\r\n\r\n private getChannels() {\r\n this._chManageService.getChannelsByOwnerId(this._authService._user.profile.sub)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n let channels = res.body;\r\n this.channelList = channels;\r\n // console.log(channels);\r\n } else {\r\n // console.log(res);\r\n this._toastService.error(\"Could not find Channel\");\r\n }\r\n })\r\n }\r\n\r\n private datesInit(): void {\r\n // this sets initial time val \r\n let now = new Date();\r\n let nowHour = now.getHours();\r\n let nowDay;\r\n if (nowHour < 13) {\r\n if (nowHour == 0) {\r\n nowHour = 12;\r\n nowDay = 'AM';\r\n } else {\r\n if (nowHour == 12 || nowHour == 11) {\r\n nowDay = 'PM';\r\n } else {\r\n nowDay = 'AM';\r\n }\r\n }\r\n } else {\r\n nowHour -= 12;\r\n if (nowHour == 12 || nowHour == 11) {\r\n nowDay = 'AM';\r\n } else {\r\n nowDay = 'PM';\r\n }\r\n }\r\n if (nowHour == 12) {\r\n nowHour = 1;\r\n } else {\r\n nowHour++;\r\n if (nowHour == 12 && nowDay === 'AM') {\r\n now.setDate(now.getDate() + 1);\r\n }\r\n }\r\n let initalHour = this.modifyTimeString(nowHour, 0, nowDay);\r\n this.selectSchedule = {\r\n \"fromDate\": this.todaysDate,\r\n \"fromHour\": nowHour,\r\n \"fromMin\": 0,\r\n \"fromDay\": nowDay,\r\n \"time\": initalHour,\r\n \"toDate\": \"\",\r\n \"toHour\": 12,\r\n \"toMin\": 0,\r\n \"toDay\": \"PM\",\r\n \"start\": \"\",\r\n \"end\": \"\",\r\n \"timeLength\": \"1\",\r\n \"customHours\": \"0\",\r\n \"customMinutes\": \"15\"\r\n };\r\n }\r\n\r\n private newMeetingForm(meetingType: string = '', channelId: string = '') {\r\n this.meetingForm = this._formBuilder.group({\r\n name: ['', [Validators.required]],\r\n topic: [null],\r\n type: [meetingType],\r\n channelId: [channelId],\r\n start: [''],\r\n end: [''],\r\n allDay: [false]\r\n }, {\r\n validator: ChannelSelected()\r\n });\r\n }\r\n\r\n get formControls() { return this.meetingForm.controls; }\r\n\r\n public onFormChange() {\r\n this.subscriptions.push(this.meetingForm.valueChanges.subscribe(data => {\r\n // console.log('Form changes', data);\r\n this.selectedChannelId = data.channelId;\r\n this.emitTouched();\r\n }));\r\n }\r\n\r\n public emitTouched() {\r\n if (!this.formTouched) {\r\n this.formTouched = true;\r\n // console.log('Form Touched Emiited');\r\n this.formTouchedEvent.emit(true);\r\n }\r\n }\r\n\r\n public resetTouched() {\r\n this.formTouched = false;\r\n this.formTouchedEvent.emit(false);\r\n }\r\n\r\n //For Edit Meeting\r\n private editMeetingInit() {\r\n // console.log(this.meetingInfo.start);\r\n let meetStart = new Date(this.meetingInfo.start);\r\n // console.log(meetStart);\r\n meetStart.setMinutes(meetStart.getMinutes() - meetStart.getTimezoneOffset()); //Converts back to Local\r\n // console.log(meetStart)\r\n let meetEnd = new Date(this.meetingInfo.end);\r\n meetEnd.setMinutes(meetEnd.getMinutes() - meetEnd.getTimezoneOffset()); //Converts back to Local\r\n\r\n this.selectSchedule = {\r\n \"fromDate\": meetStart,\r\n \"fromHour\": this.getMeetingInfoToEditTimeFormat(meetStart, 'hour'),\r\n \"fromMin\": this.getMeetingInfoToEditTimeFormat(meetStart, 'min'),\r\n \"fromDay\": this.getMeetingInfoToEditTimeFormat(meetStart, 'day'),\r\n \"toDate\": meetEnd,\r\n \"toHour\": this.getMeetingInfoToEditTimeFormat(meetEnd, 'hour'),\r\n \"toMin\": this.getMeetingInfoToEditTimeFormat(meetEnd, 'min'),\r\n \"toDay\": this.getMeetingInfoToEditTimeFormat(meetEnd, 'day'),\r\n \"start\": meetStart,\r\n \"end\": meetEnd,\r\n \"timeLength\": this.getMeetingTimeLength(meetStart, meetEnd),\r\n \"customHours\": this.getMeetingDurationCustom(meetStart, meetEnd, 'hour'),\r\n \"customMinutes\": this.getMeetingDurationCustom(meetStart, meetEnd, 'min'),\r\n \"time\": \"\"\r\n }\r\n // console.log(this.selectSchedule);\r\n this.selectSchedule.time = this.modifyTimeString(this.selectSchedule.fromHour, this.selectSchedule.fromMin, this.selectSchedule.fromDay);\r\n this.meetingForm = this._formBuilder.group({\r\n name: [this.meetingInfo.title, [Validators.required]],\r\n topic: [this.meetingInfo.body],\r\n type: [this.isEditQuick ? \"quick\" : \"channel\"],\r\n channelId: [this.meetingInfo.chatRoomId],\r\n start: [''],\r\n end: [''],\r\n allDay: [this.meetingInfo.allDay]\r\n });\r\n this.onFormChange();\r\n // console.log('schedule', this.selectSchedule);\r\n // console.log('form', this.meetingForm.value);\r\n this.getMeetingAttendees();\r\n }\r\n\r\n // new time return \r\n private getMeetingInfoToEditTimeFormat(date: Date, type: string): number | string {\r\n if (type === 'hour') {\r\n let hour = date.getHours();\r\n if (hour > 12) {\r\n return hour -= 12;\r\n } else {\r\n return hour;\r\n }\r\n }\r\n if (type === 'min') return date.getMinutes();\r\n if (type === 'day') {\r\n if (date.getHours() < 12) {\r\n return 'AM';\r\n } else {\r\n return 'PM';\r\n }\r\n }\r\n }\r\n\r\n private modifyTimeString(hour: number, min: number, day: string) {\r\n let newHour: any = hour;\r\n let newMin: any = min;\r\n if (hour < 10) {\r\n newHour = \"0\" + hour;\r\n }\r\n if (min < 10) {\r\n newMin = \"0\" + min;\r\n }\r\n return newHour + \":\" + newMin + \" \" + day;\r\n }\r\n\r\n private getMeetingDurationCustom(dateStart, dateEnd, type: string): string {\r\n let difference = dateEnd - dateStart;\r\n let differenceInMinutes = difference / 1000 / 60;\r\n differenceInMinutes = differenceInMinutes % 60;\r\n let differenceInHours = difference / 1000 / 60 / 60;\r\n if (type === 'min') return differenceInMinutes.toString();\r\n if (type === 'hour') return Math.floor(differenceInHours).toString();\r\n }\r\n\r\n private getMeetingTimeLength(dateStart, dateEnd): string {\r\n // console.log(\"start,end?\", dateStart,dateEnd):Date\r\n let difference = dateEnd - dateStart;\r\n let differenceInMinutes = difference / 1000 / 60;\r\n let differenceInHours = difference / 1000 / 60 / 60;\r\n if (differenceInHours === 24) {\r\n differenceInMinutes = 0;\r\n return '24';\r\n } else if (differenceInMinutes === 15) {\r\n return '15'\r\n } else if (differenceInMinutes === 30) {\r\n return '30';\r\n } else if (differenceInHours === 1) {\r\n return '1';\r\n } else {\r\n return '2';\r\n }\r\n }\r\n\r\n private getMeetingAttendees() {\r\n this._meetingService.getMeetingAttendeesToEditByMeetingId(this.meetingId, this._authService._user.profile.sub)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.meetingAttendees = res.body.meetingAttendees; // only attendees, to get creator just res.body is needed...\r\n // console.log(\"%c meeting attendees? \", this.meetingAttendees);\r\n // console.log(\"attendees\", this.meetingAttendees)\r\n } else {\r\n // console.log(\"error getting meeting attendees?\", res)\r\n this._toastService.error(\"Could not retrieve meeting attendees\")\r\n }\r\n });\r\n }\r\n\r\n // setChannelId(e: Event) {\r\n // const target = e.target as HTMLSelectElement; // ang12 ts fix\r\n // console.log(target);\r\n // this.selectedChannelId = target.value; // ang12 ts fix\r\n // }\r\n\r\n setChannelId() {\r\n this.selectedChannelId = this.meetingForm.value.channelId;\r\n }\r\n\r\n // 🚧 called on meeting submit \r\n public scheduleManager() {\r\n this.createLock = true; // submitting true\r\n this.setFromDate();\r\n // console.log(this.meetingForm.value.start);\r\n if (this.dateCompare(this.meetingForm.value.start)) { // makes sure that the start time is in the future\r\n this.scheduleError = false;\r\n this.setToDate();\r\n if (this.isEditQuick || this.isEditChannel) {\r\n let newMeeting = this.setMeeting(this.meetingForm.value.channelId);\r\n this._updateMeeting(newMeeting);\r\n } else {\r\n if (this.meetingForm.value.type === \"quick\") {\r\n if (this.meetingForm.value.name !== \"private meeting\") {\r\n this._postQuickMeetingChannel();\r\n } else {\r\n this._toastService.error(\"Can not name a meeting 'private meeting', this is for default only.\");\r\n this.meetingForm.value.name = \"\";\r\n // this.selectSchedule.fromDate = this.todaysDate;\r\n // this.resetTimeValueOnError();\r\n this.createLock = false; // submitting false\r\n this.scheduleError = false;\r\n // console.log(\"can not name meeting private meeting...\", this.meetingForm.value.name)\r\n }\r\n } else if (this.meetingForm.value.type === 'channel') {\r\n let newMeeting = this.setMeeting(this.meetingForm.value.channelId);\r\n this._postMeeting(newMeeting);\r\n } else {\r\n // console.log(this.meetingForm.value);\r\n this._toastService.error('Could not identify type');\r\n }\r\n }\r\n } else {\r\n this._toastService.error(\"You cannot select a date/time in the past.\")\r\n // this.selectSchedule.fromDate = this.todaysDate;\r\n // this.resetTimeValueOnError();\r\n this.createLock = false; // submitting false\r\n this.scheduleError = false;\r\n // console.log(\"there was an error in schedual time?\", this.dateCompare(this.newMeeting.start))\r\n }\r\n }\r\n\r\n private dateCompare(dateCheck): boolean {\r\n let now = new Date();\r\n if (dateCheck.getTime() > now.getTime()) {\r\n // console.log(\"date in future\");\r\n return true;\r\n } else {\r\n // console.log(\"date in past\");\r\n return false;\r\n }\r\n }\r\n\r\n private setFromDate() {\r\n if (this.selectSchedule.time.length < 8) {\r\n this.selectSchedule.time = \"0\" + this.selectSchedule.time;\r\n }\r\n this.selectSchedule.fromHour = this.parseHourFromTime(this.selectSchedule.time);\r\n this.selectSchedule.fromMin = this.parseMinFromTime(this.selectSchedule.time);\r\n this.selectSchedule.fromDay = this.parseDayFromTime(this.selectSchedule.time);\r\n\r\n let newStartTime = moment(this.selectSchedule.fromDate).toDate(); // 🎑 moment formating is becoming deprecated... https://sebastiandedeyne.com/moment-js-thank-you-for-your-service/#:~:text=Moment%20has%20been%20the%20date,deprecated%20status%20of%20the%20project.&text=We%20now%20generally%20consider%20Moment,but%20it%20is%20indeed%20done.\r\n newStartTime.setHours(this.selectSchedule.fromHour);\r\n newStartTime.setMinutes(this.selectSchedule.fromMin);\r\n // console.log(\"::::: new date :::::\", newStartTime);\r\n let newHour = parseInt(this.selectSchedule.fromHour, 10);\r\n\r\n if (this.selectSchedule.fromDay === \"PM\") {\r\n if (this.selectSchedule.fromHour != 12) {\r\n newHour += 12;\r\n }\r\n } else if (this.selectSchedule.fromHour == 12) {\r\n newHour = 0;\r\n }\r\n // console.log(\"new Hour: \", newHour);\r\n newStartTime.setHours(newHour, this.selectSchedule.fromMin, 0);\r\n this.meetingForm.value.start = newStartTime;\r\n // console.log(\"meeting start ::: \", this.newMeeting.start);\r\n }\r\n\r\n public setToDate() {\r\n this.setFromDate();\r\n let newEndTime: Date = new Date(this.meetingForm.value.start);\r\n // console.log(\"meeting start :::\", newEndTime);\r\n if (this.selectSchedule.timeLength === \"2\") {\r\n newEndTime.setHours(newEndTime.getHours() + 2);\r\n } else if (this.selectSchedule.timeLength === \"1\") {\r\n newEndTime.setHours(newEndTime.getHours() + 1);\r\n } else if (this.selectSchedule.timeLength === \"30\") {\r\n newEndTime.setMinutes(newEndTime.getMinutes() + 30);\r\n } else if (this.selectSchedule.timeLength === \"15\") {\r\n newEndTime.setMinutes(newEndTime.getMinutes() + 15);\r\n } else {\r\n newEndTime.setDate(newEndTime.getDate() + 1)\r\n this.meetingForm.value.allDay = true;\r\n }\r\n // console.log(\"newEndTimeSet main opt :::\", newEndTime)\r\n this.meetingForm.value.end = newEndTime;\r\n // console.log(\"meeting end :::\", this.meetingForm.value.end);\r\n }\r\n\r\n private parseHourFromTime(time) {\r\n return time[0] + time[1];\r\n }\r\n private parseMinFromTime(time) {\r\n return time[3] + time[4];\r\n }\r\n private parseDayFromTime(time) {\r\n return time[6] + time[7];\r\n }\r\n\r\n // ❌ unused ...\r\n // called on schedule error to reset time \r\n // private resetTimeValueOnError() {\r\n // let now = new Date();\r\n // let nowHour = now.getHours();\r\n // let nowDay;\r\n // if (nowHour < 13) {\r\n // if (nowHour == 0) {\r\n // nowHour = 12;\r\n // nowDay = 'AM';\r\n // } else {\r\n // if (nowHour == 12 || nowHour == 11) {\r\n // nowDay = 'PM';\r\n // } else {\r\n // nowDay = 'AM';\r\n // }\r\n // }\r\n // } else {\r\n // nowHour -= 12;\r\n // if (nowHour == 12 || nowHour == 11) {\r\n // nowDay = 'AM';\r\n // } else {\r\n // nowDay = 'PM';\r\n // }\r\n // }\r\n // if (nowHour == 12) {\r\n // nowHour = 1;\r\n // } else {\r\n // nowHour++;\r\n // if (nowHour == 12 && nowDay === \"AM\") {\r\n // now.setDate(now.getDate() + 1);\r\n // }\r\n // }\r\n // this.selectSchedule.fromHour = nowHour;\r\n // this.selectSchedule.fromDay = nowDay;\r\n // }\r\n\r\n // Called from 'scheduleManager()' \r\n private _postQuickMeetingChannel() {\r\n let newChannel = {\r\n \"teamProjectId\": Constants.quickMeetingProjId,\r\n \"channelUserId\": this._authService._user.profile.sub,\r\n \"name\": this.meetingForm.value.name,\r\n \"type\": \"quick\",\r\n \"videoType\": \"jitsi\",\r\n \"topic\": this.meetingForm.value.topic,\r\n \"inviteCode\": null,\r\n \"welcome\": null,\r\n \"deleteRule\": 1,\r\n \"deleteInterval\": 1440,\r\n \"scope\": \"Site\",\r\n \"private\": this.privateMeeting,\r\n \"closed\": false,\r\n \"inVideoCall\": false,\r\n \"inScreenShare\": false,\r\n }\r\n this._apiCalls.postChannel(newChannel)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n let newChannel = res.body; // 🎇 this could have the id i need for addAttendees ???\r\n let newMeeting = this.setMeeting(newChannel.channelId);\r\n this.selectedChannelId = newChannel.channelId;\r\n this._postMeeting(newMeeting); // add invites here <<<<<\r\n } else {\r\n // console.log(\"error posting channel\", res)\r\n this.createLock = false;\r\n this._toastService.error('Failed to Create Event')\r\n }\r\n });\r\n }\r\n\r\n private setMeeting(channelId: string) {\r\n let newMeeting = {\r\n \"meetingId\": this.meetingId,\r\n \"chatUserId\": this._authService._user.profile.sub,\r\n \"chatRoomId\": channelId,\r\n \"title\": this.meetingForm.value.name,\r\n \"body\": this.meetingForm.value.topic,\r\n \"presentationUrl\": Constants.unitySite + 'channel/' + channelId,\r\n \"location\": Constants.unitySite + 'channel/' + channelId,\r\n \"start\": this.meetingForm.value.start,\r\n \"end\": this.meetingForm.value.end,\r\n \"allDay\": this.meetingForm.value.allDay,\r\n \"private\": this.privateMeeting,\r\n \"markAsBusy\": false,\r\n \"displayAttendance\": true\r\n };\r\n // if (this.meetingForm.value.type === \"channel\" && !this.isEditChannel) {\r\n // newMeeting.private = this.incomingChannelObject.private;\r\n // }\r\n if (this.incomingChannelObject) {\r\n newMeeting.private = this.incomingChannelObject.private;\r\n }\r\n return newMeeting;\r\n }\r\n\r\n // 🚧 new post meeting\r\n private _postMeeting(newMeeting: any) {\r\n console.log(newMeeting.chatRoomId);\r\n this.selectedChannelId = newMeeting.chatRoomId;\r\n // console.log(\"new meeting :: ::\", newMeeting)\r\n // this.manageUsers = true;\r\n this._meetingService.postMeeting(newMeeting)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n let meeting = res.body;\r\n this.meetingId = meeting.meetingId;\r\n this.resetTouched();\r\n if (this.meetingForm.value.type === \"channel\") {\r\n this.onCompleteEvent.emit();\r\n } else {\r\n // console.log(\"Adding Self to meeting\");\r\n // ❌💡 Adding self here Might not be needed as the act of creating the channel, adds self to tha attendees?? ////CG\r\n //this._addMeetingAttendee(this._authService._user.profile.sub); // add self \r\n // this.manageUsers = true;\r\n this.closeManageUsers();\r\n this.emitTouched();\r\n }\r\n this._channelService.updateUpcomingMeetingsList(this.meetingId, true, newMeeting.chatRoomId);\r\n // console.log(\"post meeting res from scedual ::::\", res.body);\r\n this._toastService.success(`${newMeeting.title} has successfully been created`);\r\n this.attendeeStandBylist.forEach(attendee => this.attendeeManager(attendee));\r\n } else {\r\n // console.log(JSON.stringify(res));\r\n this._toastService.error(\"There was a problem creating your meeting\")\r\n }\r\n this.createLock = false;\r\n });\r\n }\r\n\r\n //Update Meeting\r\n private _updateMeeting(newMeeting: any) {\r\n this._meetingService.putMeeting(this.meetingId, newMeeting)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this._channelService.updateUpcomingMeetingsList(this.meetingId, false, newMeeting.chatRoomId);\r\n this._toastService.success(`${newMeeting.title} has successfully been updated`);\r\n this.attendeeStandBylist.forEach(attendee => this.attendeeManager(attendee));\r\n this.resetTouched();\r\n } else {\r\n // console.log(\"error updating meeting?\", res)\r\n this._toastService.error('error updating meeting');\r\n }\r\n this.createLock = false;\r\n });\r\n }\r\n\r\n // ADD USERS IN VIA User TO MEET \r\n public attendeeOrganizer(idx: number, type: string) {\r\n //console.log(\"Attendee Organizer entered: \" + type);\r\n let userSearchBar: any;\r\n let newAttendee: AttendeeStandBy = {\r\n type: type\r\n }\r\n if (type === 'channel') {\r\n userSearchBar = document.getElementById('user-channel-search');\r\n newAttendee.userInfo = this.searchChannelUsersList[idx];\r\n newAttendee.attendeeId = this.searchChannelUsersList[idx].userId;\r\n userSearchBar.value = '';\r\n this.searchChannelUsersList = [];\r\n this.inviteChannelUsersList.push(newAttendee.userInfo);\r\n } else if (type === 'tenant') {\r\n userSearchBar = document.getElementById('user-tenant-search');\r\n newAttendee.userInfo = this.searchTenantUsersList[idx];\r\n newAttendee.attendeeId = this.searchChannelUsersList[idx].userId;\r\n userSearchBar.value = '';\r\n this.searchTenantUsersList = [];\r\n this.inviteTenantUsersList.push(newAttendee.userInfo);\r\n } else if (type === 'contact') {\r\n userSearchBar = document.getElementById('user-contact-search');\r\n newAttendee.userInfo = this.searchContactUsersList[idx];\r\n newAttendee.attendeeId = this.searchContactUsersList[idx].contactChannelUserId\r\n userSearchBar.value = '';\r\n this.searchContactUsersList = [];\r\n if (newAttendee.userInfo.contactChatUserKeyNavigation) {\r\n this.inviteTenantUsersList.push(newAttendee.userInfo);\r\n } else {\r\n this.inviteContactUsersList.push(newAttendee.userInfo);\r\n }\r\n } else if (type === 'email') {\r\n newAttendee.attendeeId = this.listItemEmail\r\n this.listItemEmail = \"\";\r\n this.listEmail.push({ email: newAttendee.attendeeId});\r\n // console.log('listEmail: ' + JSON.stringify(this.listEmail[0]));\r\n } else if (type === 'sms') {\r\n // console.log('adding user SMS to attendee list: ' + JSON.stringify(newAttendee));\r\n newAttendee.attendeeId = this.listItemSMS;\r\n // console.log('newAttendee.attendeeId: ' + newAttendee.attendeeId);\r\n this.listItemSMS = \"\";\r\n // this.listSMS.push({ sms: newAttendee.attendeeId}); ////CG\r\n // console.log('list SMS: ' + JSON.stringify(this.listSMS[0]));\r\n this.listSMS.push({phoneNumber: newAttendee.attendeeId});\r\n } else {\r\n return\r\n }\r\n this.attendeeStandBylist.push(newAttendee);\r\n this.emitTouched();\r\n }\r\n \r\n public attendeeManager(attendee: AttendeeStandBy) {\r\n console.log(\"attendee manager found entered, attendee: \" + JSON.stringify(attendee));\r\n if (attendee.type === 'channel' || attendee.type === 'tenant') {\r\n this._addMeetingAttendee(attendee.attendeeId, attendee.userInfo, attendee.type);\r\n } else if (attendee.type === 'contact') {\r\n if (attendee.userInfo.contactChannelUserId) {\r\n this._addMeetingAttendee(attendee.attendeeId, attendee.userInfo, attendee.type);\r\n } else {\r\n this._addMeetingAttendeeContact(attendee.userInfo);\r\n }\r\n } else if (attendee.type === 'email') {\r\n this._addMeetingAttendeeEmail(attendee.attendeeId);\r\n } else if (attendee.type === 'sms') {\r\n // console.log('adding user SMS to attendee list: ' + JSON.stringify(attendee));\r\n this._addMeetingAttendeeSMS(attendee.attendeeId);\r\n }\r\n }\r\n\r\n private _addMeetingAttendee(userId: string, userInfo?: any, type?: string) {\r\n let attendee = {\r\n \"channelUserId\": userId,\r\n \"meetingId\": this.meetingId\r\n }\r\n console.log(\"Adding Meeting Attendee: \" + JSON.stringify(attendee));\r\n this._meetingService.postMeetingAttendee(attendee)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Attendee Added\");\r\n // console.log(res);\r\n if (userInfo) {\r\n if (this.meetingForm.value.type === \"quick\" && userInfo) {\r\n //userinfo check is to prevent adding self as a member\r\n this._addMember(userId, this.selectedChannelId, userInfo.displayName);\r\n }\r\n }\r\n // let isNewMeeting = !this.isEditQuick && !this.isEditChannel ? true : false;\r\n // this._channelService.updateUpcomingMeetingsList(meetingId, isNewMeeting, channelId);\r\n } else if (res.status === 409) { \r\n // console.error(res);\r\n this._toastService.error(\"This user has already been added\");\r\n } else {\r\n // console.error(res);\r\n this._toastService.error(\"There was an error adding a attendee\");\r\n }\r\n });\r\n }\r\n\r\n //Add Contact ass Attendee\r\n private _addMeetingAttendeeContact(contact: any) {\r\n let attendee = {\r\n \"contactId\": contact.contactId,\r\n \"meetingId\": this.meetingId\r\n };\r\n this._meetingService.postGuestMeetingAttendee(attendee)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Contact Added :::\", res.body);\r\n let invite = {\r\n \"inviteEmail\": contact.email,\r\n \"meetingId\": this.meetingId\r\n }\r\n this._meetingService.sendInviteToken(invite)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // console.log(\"Token sent EMAIL ::\", data)\r\n // this._toastService.success(`Email invite was sent to ${invite.inviteEmail}`);\r\n \r\n } else {\r\n // console.error(\"error :::\", data);\r\n this._toastService.error(`There was an error sending your email invite to ${invite.inviteEmail}`);\r\n }\r\n });\r\n } else if (res.status === 409) {\r\n // console.error(res);\r\n this._toastService.error(\"This contact has already been added\");\r\n } else {\r\n // console.error(\"error :::\", res);\r\n this._toastService.error(\"There was an error adding your contact\");\r\n }\r\n });\r\n }\r\n \r\n\r\n private _addMeetingAttendeeEmail(email: string) {\r\n let attendee = {\r\n \"email\": email,\r\n \"meetingId\": this.meetingId\r\n };\r\n this._meetingService.postGuestMeetingAttendee(attendee)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Attendee Added EMAIL :::\", res.body);\r\n let invite = {\r\n \"inviteEmail\": email,\r\n \"meetingId\": this.meetingId\r\n }\r\n \r\n this._meetingService.sendInviteToken(invite)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // console.log(\"Token sent EMAIL ::\", data)\r\n // this._toastService.success(`Email invite was sent to ${invite.inviteEmail}`);\r\n \r\n } else {\r\n // console.error(\"error :::\", data);\r\n this._toastService.error(`There was an error sending your email invite to ${invite.inviteEmail}`);\r\n }\r\n });\r\n } else if (res.status === 409) {\r\n // console.error(res);\r\n this._toastService.error(\"This email has already been added\");\r\n } else {\r\n // console.error(\"error :::\", res);\r\n this._toastService.error(\"There was an error sending your email\");\r\n }\r\n });\r\n }\r\n\r\n // 🚧 new post SMS\r\n private _addMeetingAttendeeSMS(sms: string) {\r\n console.log(\"Posting SMS: \" + sms);\r\n let attendee = {\r\n \"phoneNumber\": sms,\r\n \"meetingId\": this.meetingId\r\n };\r\n this._meetingService.postGuestMeetingAttendee(attendee)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(\"Attendee Added SMS :::\", res.body)\r\n let invite = {\r\n \"inviteEmail\": res.body.email,\r\n \"meetingId\": this.meetingId\r\n }\r\n this._meetingService.sendInviteToken(invite)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // console.log(\"Token sent SMS ::\", data)\r\n // this._toastService.success(\"SMS invite was sent!\");\r\n } else {\r\n // console.error(\"error :::\", data);\r\n this._toastService.error(\"There was an error sending your SMS.\");\r\n }\r\n });\r\n } else if (res.status === 409) {\r\n // console.error(res);\r\n this._toastService.error(\"This number has already been added\");\r\n } else {\r\n // console.error(\"error :::\", res);\r\n this._toastService.error(\"There was an error sending your SMS.\");\r\n }\r\n });\r\n }\r\n\r\n // SEARCH FOR USERS IN TENNANT TO MEET \r\n // public _getUsersBySearchQuery() {\r\n // let userSearchBar: any = document.getElementById('user-tenant-search');\r\n // let searchString = userSearchBar.value.replace(/\\s/g, '');\r\n // if (searchString.length < 1) {\r\n // this.searchTenantUsersList = [];\r\n // } else {\r\n // this._apiCalls.getChannelUsersByTenantAndSearchQuery(searchString)\r\n // .subscribe(data => {\r\n // if (data.status === 200) {\r\n // let searchList = data.body;\r\n // this.searchTenantUsersList = [];\r\n // searchList.forEach((searchUser, index) => {\r\n // if (this._authService._user.profile.sub !== searchUser.channelUserId) {\r\n // if (!this.inviteTenantUsersList.some(listUser => // not already in invite list \r\n // searchUser.channelUserId === listUser.channelUserId)\r\n // && !this.meetingAttendees.some(attendant => // not already in current attendees list \r\n // searchUser.channelUserId === attendant.chatUserKeyNavigation.channelUserId)) {\r\n // this.searchTenantUsersList.push(searchList[index]);\r\n // }\r\n // }\r\n // });\r\n // } else {\r\n // console.error(JSON.stringify(data));\r\n // }\r\n // });\r\n // }\r\n // }\r\n\r\n //SEARCH MEMBERS/OWNERS OF A CHANNEL\r\n public _getUsersFromChannelBySearchQuery() {\r\n let userSearchBar: any = document.getElementById('user-channel-search');\r\n let searchString = userSearchBar.value.replace(/\\s/g, '');\r\n if (searchString.length < 1) {\r\n this.searchChannelUsersList = [];\r\n } else {\r\n this._chManageService.searchForMembersAndOwnersByChannelId(this.selectedChannelId, searchString)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let searchList = data.body;\r\n this.searchChannelUsersList = [];\r\n searchList.forEach((searchUser, index) => {\r\n if (this._authService._user.profile.sub !== searchUser.channelUserId) {\r\n if (!this.inviteChannelUsersList.some(listUser => // not already in invite list \r\n searchUser.channelUserId === listUser.channelUserId)\r\n && !this.meetingAttendees.some(attendant => // not already in current attendees list \r\n searchUser.channelUserId === attendant.chatUserKeyNavigation.channelUserId)) {\r\n this.searchChannelUsersList.push(searchList[index]);\r\n }\r\n }\r\n });\r\n } else {\r\n // console.error(JSON.stringify(data));\r\n this._toastService.error(\"Could not find Channel\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n //SEARCH Contacts List\r\n public _getUsersFromContactsBySearchQuery() {\r\n let userSearchBar: any = document.getElementById('user-contact-search');\r\n let searchString = userSearchBar.value.replace(/\\s/g, '');\r\n if (searchString.length < 1) {\r\n this.searchContactUsersList = [];\r\n } else {\r\n this._contactsService.getContactsBySearchQuery(this._authService._user.profile.sub, searchString)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let searchList = data.body;\r\n this.searchContactUsersList = [];\r\n // console.log(this.searchContactUsersList);\r\n searchList.forEach((searchUser, index) => {\r\n if (\r\n // not already in invite list\r\n !this.inviteContactUsersList.some(listUser => searchUser.contactId === listUser.contactId)\r\n // &&\r\n // // not already in current attendees list\r\n // !this.meetingAttendees.some(attendant => searchUser.channelUserId === attendant.chatUserKeyNavigation.channelUserId) \r\n ) {\r\n this.searchContactUsersList.push(searchList[index]);\r\n }\r\n });\r\n } else {\r\n // console.error(JSON.stringify(data));\r\n this._toastService.error(\"Could not get Contacts\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n public removeAttendeeManager(idx: number, type: string) {\r\n let userId;\r\n if (type === 'attendee') {\r\n userId = this.meetingAttendees[idx].chatUserKeyNavigation.channelUserId;\r\n } else if (type === 'channel') {\r\n userId = this.inviteChannelUsersList[idx].userId\r\n } else if (type === 'tenant') {\r\n userId = this.inviteTenantUsersList[idx].contactChannelUserId;\r\n } else if (type === 'contact') {\r\n // console.log(\"Finding remove channel User ID Contact\", this.inviteContactUsersList[idx])\r\n userId = this.inviteContactUsersList[idx].channelUserId;\r\n } else if (type === 'email') {\r\n console.log(\"Finding remove channel User ID Email\", this.listEmail[idx]);\r\n userId = this.listEmail[idx].channelUserId;\r\n } else if (type === 'sms') {\r\n //console.log(\"Finding remove channel User ID SMS\", this.listSMS[idx])\r\n userId = this.listSMS[idx].channelUserId;\r\n }\r\n\r\n if (userId) {\r\n console.log(\"Removing User: \", this.listEmail[idx]);\r\n this._removeAttendee(userId, type, idx);\r\n this.emitTouched();\r\n }\r\n // When the userID is null; if filling out the form prior to creating a meeting\r\n //// CG\r\n else if (type === 'email')\r\n {\r\n this.listEmail.splice(idx, 1);\r\n }\r\n else if (type === 'sms')\r\n {\r\n this.listSMS.splice(idx, 1);\r\n }\r\n\r\n }\r\n\r\n public _removeAttendee(userId: string, type: string, idx: number) {\r\n let attendeeObject = {\r\n meetingId: this.meetingId,\r\n channelUserId: userId\r\n };\r\n this._meetingService.deleteMeetingAttendee(attendeeObject)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"remove att res?\", res)\r\n if (type === 'attendee') {\r\n this.getMeetingAttendees(); // update list\r\n } else if (type === 'channel') {\r\n this.inviteChannelUsersList.splice(idx, 1);\r\n } else if (type === 'tenant') {\r\n this.inviteTenantUsersList.splice(idx, 1);\r\n } else if (type === 'contact') {\r\n this.inviteContactUsersList.splice(idx, 1);\r\n } else if (type === 'email') {\r\n this.listEmail.splice(idx, 1);\r\n } else if (type === 'sms') {\r\n this.listSMS.splice(idx, 1)\r\n }\r\n if (this.meetingForm.value.type === \"quick\") {\r\n this._removeMember(userId, this.selectedChannelId);\r\n }\r\n } else {\r\n console.error(\"error deleting meeting attendee?\", res)\r\n }\r\n });\r\n }\r\n\r\n // cancel meeting\r\n public cancelMeetingPrompt() {\r\n this._toastService.continue(\"Are you sure you want to cancel this Meeting?\", \"cancelMeetingModal\", \"Notify the other guests\")\r\n }\r\n\r\n private cancelMeeting(cancelNotification: boolean) {\r\n let meetingObj = {\r\n \"meetingId\": this.meetingId,\r\n \"cancelNotification\": cancelNotification\r\n };\r\n // console.log(\"cancel meeting?\")\r\n this._meetingService.cancelMeeting(meetingObj)\r\n .subscribe(res => {\r\n // console.log(\"RES???:::\", res)\r\n if (res.status === 200) {\r\n // console.log(\"meeting Cancled\", res)\r\n let isNewMeeting = false;\r\n this._channelService.updateUpcomingMeetingsList(this.meetingId, isNewMeeting, this.meetingForm.value.channelId);\r\n // this._router.navigate(['/']);\r\n this.onCompleteEvent.emit(); // 💡 can emit newMeeting to events component ... \r\n } else {\r\n console.error(\"error canceling meeting?\", res)\r\n }\r\n });\r\n }\r\n\r\n public clearSearch(id: string) {\r\n let userSearchBar: any = document.getElementById(id);\r\n userSearchBar.value = '';\r\n this.searchTenantUsersList = [];\r\n this.searchChannelUsersList = [];\r\n }\r\n\r\n private _addMember(userId: string, channelId: string | EventEmitter, username: string) {\r\n let member = {\r\n \"channelUserId\": userId,\r\n \"channelId\": channelId\r\n };\r\n this._apiCalls.postChannelMember(member)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(username + \"Member Added\", res.body);\r\n } else if (res.status === 409) {\r\n // console.log(username + \" Already Exists\");\r\n } else {\r\n // consol/e.log(\"error in _addMember\", res);\r\n this._toastService.error(username + \" could not be added\");\r\n }\r\n });\r\n }\r\n\r\n private _removeMember(userId: string, channelId: string | EventEmitter) {\r\n let member = {\r\n \"channelUserId\": userId,\r\n \"channelId\": channelId\r\n };\r\n this._apiCalls.deleteChannelMember(member)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n // console.log(\"Member Removed\");\r\n } else if (res.status === 404) {\r\n // console.log(\"Member does not exist for this Attendee\");\r\n } else {\r\n // console.log(\"error in _addMember\", res);\r\n this._toastService.error(\"Member could not be removed\");\r\n }\r\n });\r\n }\r\n\r\n // 🚧 ... so can use enter to pick selection from dropdown without triggering the enter submit ... \r\n public handleDropdownEnterSubmitLock(isOpen:boolean, isDatePicker: boolean, dropdownId?: string) {\r\n // console.log(isOpen)\r\n if(isOpen) {\r\n this.isDropdownOpen = isOpen;\r\n } else {\r\n let el = document.getElementById(dropdownId);\r\n if(isDatePicker) {\r\n if(!!el) {\r\n el.focus();\r\n }\r\n } else {\r\n if(!!el) {\r\n el.blur();\r\n }\r\n }\r\n this.isDropdownOpen = isOpen;\r\n }\r\n }\r\n\r\n public showManageUsers() {\r\n this.manageUsers = true;\r\n this.emitTouched();\r\n // console.log(\"this.selectedChannelId\", this.selectedChannelId)\r\n // console.log(\"this.meetingId\", this.meetingId)\r\n }\r\n\r\n public closeManageUsers() {\r\n this.onCompleteEvent.emit();\r\n }\r\n\r\n togglePrivateChange(e: MatSlideToggleChange){\r\n console.log(\"Private before: \" + this.privateMeeting )\r\n this.privateMeeting = !e.checked;\r\n console.log(\"Private after: \" + this.privateMeeting )\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// old datepicker funcs ... \r\n // date picker keydown down arrow lock \r\n // public preventDatePickerDownArrowPast(e) {\r\n // if ((this.selectSchedule.fromDate || e.target.value) <= this.todaysDate) {\r\n // e.preventDefault();\r\n // console.log(\"1 down arrow pressed, past prevented, e.val:\", e.target.value, \"today:\", this.todaysDate)\r\n // }\r\n // }\r\n\r\n // ℹ this being checked on date picker \r\n // public validateMeetingStart() {\r\n // if (this.selectSchedule.fromDate) {\r\n // console.log(\"date on change validation\", this.selectSchedule.fromDate)\r\n // this.setFromDate();\r\n // if (this.dateCompare(this.meetingForm.value.start)) {\r\n // this.scheduleError = false;\r\n // } else {\r\n // this.scheduleError = true;\r\n // this.resetTimeValueOnError();\r\n // }\r\n // } else {\r\n // console.log(\"no val in date picker, no error plz\")\r\n // }\r\n // }\r\n\r\n // called on date pickers (blur) if invalid date will reset to Date.now() & remove error message\r\n // public validateMeetingStartBlurReset() {\r\n // console.log(\"date on blur validation, schedule error? ::\", this.scheduleError)\r\n // if (this.scheduleError) {\r\n // let now = new Date();\r\n // this.selectSchedule.fromDate = now;\r\n // this.resetTimeValueOnError();\r\n // this.scheduleError = false;\r\n // }\r\n // }\r\n","\r\n
\r\n\t

\r\n\t\t\r\n\t\tCreate {{ lockChannel ? \"Channel\" : \"New\" }} Meeting\r\n\t

\r\n\t

\r\n\t\t\r\n\t\tEdit Meeting\r\n\t

\r\n\t\r\n\t\t
\r\n\t\t\t

\r\n\t\t\t\t{{ incomingChannelObject.name }}\r\n\t\t\t

\r\n\t\t\t\r\n\t\t\t\t{{\r\n\t\t\t\t\t(meetingInfo.channelKeyNavigation.type | lowercase) === \"quick\"\r\n\t\t\t\t\t\t? \"Invitational Meeting\"\r\n\t\t\t\t\t\t: meetingInfo.channelKeyNavigation.name\r\n\t\t\t\t}}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tPublic Meeting\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{{ channel.name }} | {{ channel.teamProjectKeyNavigation.name }} |\r\n\t\t\t\t\t{{\r\n\t\t\t\t\t\tchannel.chatUserKeyNavigation\r\n\t\t\t\t\t\t\t? channel.chatUserKeyNavigation.displayName\r\n\t\t\t\t\t\t\t: \"No Creator Found\"\r\n\t\t\t\t\t}}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t

Schedule:

\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t Date: \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t Time: \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t Length:\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t15 min\r\n\t\t\t\t\t\t30 min\r\n\t\t\t\t\t\t1 Hour\r\n\t\t\t\t\t\t2 Hour\r\n\t\t\t\t\t\tAll Day\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\r\n\t\r\n\r\n\t\r\n\t

\r\n\t\tTo add attendees to your meeting.\r\n\t\t{{\r\n\t\t\tmeetingForm.value.type === \"quick\"\r\n\t\t\t\t? \"VIA3 Users can be searched by name, while people outside your Organization can be invited by email or phone number.\"\r\n\t\t\t\t: \"Channel Members can be searched by name.\"\r\n\t\t}}\r\n\t

\r\n\r\n\t
\r\n\t\t\r\n\t\t\t

Invite via:

\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\tContacts\r\n\t\t\t\t\r\n\t\t\t\t SMS \r\n\t\t\t\t Email \r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t
\r\n\t\t\t

Attendee List:

\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\tYour invite list is empty{{\r\n\t\t\t\t\t\tformControls.channelId.errors ? \", select a Channel to add attendees\" : \"\"\r\n\t\t\t\t\t}}\r\n\t\t\t\t

\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{{ user.chatUserKeyNavigation.displayName }}\r\n\t\t\t\t\t\t\t-\r\n\t\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\t\tuser.chatUserKeyNavigation.email ||\r\n\t\t\t\t\t\t\t\t\t(user.chatUserKeyNavigation.phone | mask: \"(000) 000-0000\")\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ user.displayName }} -\r\n\t\t\t\t\t\t\t{{ user.email ? user.email : \"(no email)\" }}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ user.displayName }} -\r\n\t\t\t\t\t\t\t{{ user.email ? user.email : \"(no email)\" }}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ user.displayName }} -\r\n\t\t\t\t\t\t\t{{ user.email ? user.email : \"(no email)\" }}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{{ sms.sms | mask: \"(000) 000-0000\" }}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t{{ email.email }}\r\n\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
0\">\r\n\t\t\t\r\n\t\t\t\t{{ user.displayName }} -\r\n\t\t\t\t{{ user.email ? user.email : \"(no email)\" }}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tNo Users Found\r\n\t\t\t

\r\n\t\t\r\n\t\r\n\r\n\t\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\r\n\t\t
0\">\r\n\t\t\t\r\n\t\t\t\t{{ user.displayName }} -\r\n\t\t\t\t{{ user.email ? user.email : \"(no email)\" }}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tNo Users Found\r\n\t\t\t

\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\tAdd\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t\r\n\t\t\r\n\t\t
\r\n\t\t\r\n\t\t\tAdd\r\n\t\t\r\n\t\r\n\r\n\t\r\n\t
\r\n\t\t\r\n\t\t\tCancel Event\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t\t{{ incomingMeetingId ? \"Update Event\" : \"Schedule Meeting\" }}\r\n\t\t\r\n\t\t\r\n\t\t\t \r\n\t\t\t{{ incomingMeetingId ? \"Updating...\" : \"Creating...\" }}\r\n\t\t\r\n\t
\r\n\r\n\r\n\r\n
\r\n\t
\r\n\t\t\r\n\t\t\r\n\t
\r\n
\r\n\r\n\r\n\t\r\n\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { consoleLogStyle } from '../../varaibles';\r\n\r\n@Component({\r\n selector: 'time-difference',\r\n templateUrl: './time-difference.component.html',\r\n styleUrls: ['./time-difference.component.scss']\r\n})\r\nexport class TimeDifferenceComponent implements OnInit, OnDestroy {\r\n\r\n @Input() orderTime: any;\r\n\r\n public ticks: number = 0;\r\n public midNight: number = 0;\r\n public tickInterval: any;\r\n\r\n constructor() { }\r\n\r\n figureOutTimeSincePost(when) {\r\n // Convert the \"when\" into a usable date object, and remember it is a UTC date\r\n var t = when.replace('T', ' ').replace('+00:00', '').split(/[- :]/);\r\n this.getTicks(t);\r\n this.tickInterval = setInterval(() => {\r\n this.getTicks(t);\r\n // this.getMidnight();\r\n }, 60000);\r\n //return Number(timeDiff);\r\n }\r\n\r\n getTicks(t) {\r\n var whenAsUsableDate = new Date(Date.UTC(t[0], t[1] - 1, t[2], t[3], t[4], t[5]));\r\n const date: number = moment(whenAsUsableDate).valueOf();\r\n // When getting the date, we need to get the UTC date, because we store UTC date in the db\r\n var timeDiff = Math.floor((new Date().getTime() - date) / 1);\r\n this.ticks = timeDiff;\r\n }\r\n\r\n getMidnight() {\r\n var midnight = new Date();\r\n var now = new Date();\r\n this.midNight = ((now.getTime() * 10000) + 621355968000000000)-((midnight.getTime() * 10000) + 621355968000000000);\r\n }\r\n\r\n min() {\r\n return Math.floor(this.ticks / 60000);\r\n }\r\n\r\n hour() {\r\n return Math.floor(this.ticks / 3600000);\r\n }\r\n\r\n day() {\r\n return Math.floor(this.ticks / 86400000);\r\n }\r\n\r\n week() {\r\n return Math.floor(this.ticks / 604800000);\r\n }\r\n\r\n month() {\r\n return Math.floor(this.ticks / 2.6280E+9);\r\n }\r\n\r\n year() {\r\n return Math.floor(this.ticks / 3.1536E+10);\r\n }\r\n\r\n midnight() {\r\n // ❌❌❌💡 this is being over called ... see log ... \r\n // console.log(\"%c ❔ Could this be breaking the chat? [time-difference component]\", consoleLogStyle)\r\n var midnight = new Date();\r\n midnight.setHours(0, 0, 0, 0);\r\n var now = new Date(this.orderTime);\r\n if (now > midnight) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n midnightBefore() {\r\n // ❌❌❌💡 this is being over called ... see log ... \r\n // console.log(\"%c ❔ Could this be breaking the chat? [time-difference component]\", consoleLogStyle)\r\n var midnight = new Date();\r\n midnight.setHours(0, 0, 0, 0);\r\n var yesterday = new Date();\r\n yesterday.setDate(midnight.getDate() - 1);\r\n var now = new Date(this.orderTime);\r\n if (now > yesterday) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.figureOutTimeSincePost(this.orderTime);\r\n }\r\n\r\n ngOnDestroy() {\r\n clearInterval(this.tickInterval);\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n Today\r\n\r\n\r\n\r\n Yesterday\r\n\r\n\r\n\r\n {{ orderTime | date:'EEEE'}}\r\n\r\n\r\n= 604800000\">\r\n \r\n {{ orderTime | date:'MMM d, y'}}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport * as tVideo from 'twilio-video';\r\nimport { TwilioService } from 'src/app/services/twillio.service';\r\n\r\n@Component({\r\n selector: 'app-twilio-video',\r\n templateUrl: './twilio-video.component.html',\r\n styleUrls: ['./twilio-video.component.scss']\r\n})\r\nexport class TwilioVideoComponent implements OnInit {\r\n\r\n constructor(\r\n _twillioService: TwilioService\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Microphone
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Camera
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Video Chat
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Error
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","export function ScreenCheck(mediaWidth: number) {\r\n let mediaQuery = window.matchMedia(`(max-width: ${mediaWidth - 1}px)`)\r\n if (mediaQuery.matches) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n}","import { Component, EventEmitter, OnDestroy, Output } from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { ModalService } from \"src/app/services/modal.service\";\r\nimport { ToastNotificationService } from \"src/app/services/toast-notification.service\";\r\n\r\n\r\n@Component({\r\n selector: \"modal\",\r\n templateUrl: \"./modal.component.html\",\r\n})\r\nexport class ModalComponent implements OnDestroy {\r\n\r\n @Output(\"closeModal\") closeModal = new EventEmitter();\r\n public formTouched: boolean = false;\r\n public toastResolver: string = \"closeModal\";\r\n public toastMessage: string = \"You are about lose all progress, are you sure you want to close this form?\";\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor( \r\n private _toastService: ToastNotificationService,\r\n private _modalService: ModalService,\r\n ) { \r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.pipe(tap((data) => {\r\n if(data.type === this.toastResolver) {\r\n this.closeModal.emit();\r\n }\r\n })).subscribe());\r\n \r\n this.subscriptions.push(this._modalService.modalFormTouchedSubject.pipe(tap( _ => {\r\n this.formTouched = true;\r\n })).subscribe());\r\n this.subscriptions.push(this._modalService.modalFormCompleteSubject.pipe(tap( _ => {\r\n this.closeModal.emit();\r\n })).subscribe());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n closeConfirm() {\r\n if(this.formTouched) {\r\n this._toastService.continue(this.toastMessage, this.toastResolver);\r\n } else {\r\n this.closeModal.emit();\r\n }\r\n }\r\n}","\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n","// Main core modules \r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { RouterModule } from '@angular/router';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\n\r\n\r\n// components (unused) ❌ needs review | removal ... \r\n// import { FormBuilderModule } from '../form-builder/form-builder.module';\r\n// import { FormComponent } from '../form-builder/form/form.component';\r\n// import { FormViewerHomeComponent } from '../form-builder/form-viewer-home/form-viewer-home.component';\r\n// import { ViewerComponent } from '../form-builder/viewer/viewer.component';\r\n// import { BuilderComponent } from '../form-builder/builder/builder.component';\r\n\r\n\r\nimport { KurentoVideoComponent } from './components/kurento-video/kurento-video.component';\r\nimport { MikeKurentoComponent } from './components/mike-kurento/mike-kurento.component';\r\nimport { TwilioVideoComponent } from './components/twilio-video/twilio-video.component';\r\nimport { AmpPlayerComponent } from './components/amp-player/amp-player.component';\r\nimport { RTCVideoComponent } from './components/rtc-video/rtc-video.component';\r\nimport { StreamErrorsComponent } from './components/rtc-video/stream-errors/stream-errors.component';// for rtc \r\nimport { DeviceCheckComponent } from './components/device-check/device-check.component';// for rtc \r\n\r\n\r\n// components\r\nimport { ChatComponent } from './components/chat-component/chat.component';\r\nimport { JitsiVideoComponent } from './components/jitsi-video/jitsi-video.component';\r\nimport { LiveStreamingVideoComponent } from './components/live-streaming-video/live-streaming-video.component';\r\nimport { EmojiButtonComponent } from './components/emoji-button/emoji-button.component';\r\nimport { ProfileImgUploadComponent } from './components/profile-img-upload/profile-img-upload.component';\r\nimport { FileStorageComponent } from './components/file-storage/file-storage.component';\r\nimport { ConnectionOverlayComponent } from './components/connection-overlay/connection-overlay.component';\r\n\r\n// ❌ possible memory leaks ... is in chat component ... \r\nimport { TimeDifferenceComponent } from './components/time-difference/time-difference.component';\r\n// ... \r\n\r\n\r\n// pipes\r\nimport { ByteConvertPipe } from '../pipes/byte-convert.pipe';\r\nimport { FolderNamePipe } from '../pipes/folder-name.pipe';\r\nimport { FileNamePipe } from '../pipes/file-name.pipe';\r\nimport { FaxFolderNamePipe } from '../pipes/fax-folder-name.pipe';\r\nimport { FormatPhoneNumberPipe } from '../pipes/format-phone-number.pipe';\r\nimport { MessageWithLinksPipe } from '../pipes/message-with-links';\r\nimport { MessageWithImagePipe } from '../pipes/message-with-image';\r\nimport { HighlightSearch } from '../pipes/highlight.pipe';\r\nimport { ChannelFolderPipe } from '../pipes/channel-folder.pipe';\r\nimport { ChannelCardAvitars } from '../pipes/channel-card-avatars.pipe';\r\nimport { MeetingDurationPipe } from '../pipes/meeting-duration.pipe';\r\nimport { ChannelOwnerComparePipe } from '../pipes/channel-owner-compare.pipe';\r\nimport { UserStatusNamePipe } from '../pipes/user-status-name.pipe';\r\nimport { TimeAgoPipe } from '../pipes/time-ago.pipe';\r\nimport { CheckInputLengthPipe } from '../pipes/check-input-length.pipe';\r\nimport { lastMessagePipe } from '../pipes/last-message.pipe';\r\nimport { StatusDisplayPipe } from '../pipes/status-display.pipe';\r\nimport { DefaultImageOverlayPipe } from '../pipes/default-image-overlay.pipe';\r\nimport { CompareStringsPipe } from '../pipes/compare-strings-pipe';\r\nimport { MediaWidthCheckPipe } from '../pipes/media-width-check.pipe';\r\nimport { QuickmeetingChannelNamePipe } from '../pipes/quickmeeting-channel-name.pipe';\r\nimport { TestListLengthPipe } from '../pipes/test-list-length.pipe';\r\n\r\n\r\n// Angular Material @12.2.8 = https://material.angular.io/ \r\nimport { FullscreenOverlayContainer, OverlayContainer } from '@angular/cdk/overlay';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions } from '@angular/material/tooltip';\r\nimport { OverlayModule } from '@angular/cdk/overlay'; // not used yet is for popovers...\r\n\r\n\r\n// Angular Material Timepicker = https://agranom.github.io/ngx-material-timepicker/\r\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\r\n\r\n\r\n// 🚧 new 10/4/2021 ...\r\nimport { EventsComponent } from './components/events/events.component';\r\nimport { ScheduleMeetingComponent } from './components/schedule-meeting/schedule-meeting.component';\r\nimport { MeetingInfoComponent } from './components/meeting-info/meeting-info.component';\r\n\r\nimport { ChannelsHistoryComponent } from './components/channels-history/channels-history.component';\r\nimport { CreateChannelComponent } from './components/create-channel/create-channel.component';\r\nimport { CreateProjectComponent } from './components/create-project/create-project.component';\r\nimport { ChannelInfoComponent } from './components/channel-info/channel-info.component';\r\nimport { ManageUsersComponent } from '../channel-app/manage-users/manage-users.component';\r\n\r\nimport { ContactsComponent } from './components/contacts/contacts.component';\r\nimport { CreateContactComponent } from './components/create-contact/create-contact.component';\r\nimport { ContactInfoComponent } from './components/contact-info/contact-info.component';\r\n\r\nimport { AlertsComponent } from './components/alerts/alerts.component';\r\nimport { AlertsSettingsComponent } from './components/alerts-settings/alerts-settings.component';\r\n\r\nimport { GuestSignOutComponent } from './components/guest-sign-out/guest-sign-out.component';\r\n\r\n// new loading spinner for home columns \r\nimport { LoadingHomeComponent } from './components/loading-home/loading-home.component';\r\n\r\nimport { NgxEditorModule } from 'ngx-editor';\r\n\r\nimport { AccountEmailInviteComponent } from './components/account-email-invite/account-email-invite.component';\r\n\r\nimport { ModalComponent } from './modal/modal.component';\r\n\r\n\r\nexport const myCustomTooltipDefaults: MatTooltipDefaultOptions = {\r\n showDelay: 400,\r\n hideDelay: 100,\r\n touchGestures: 'off',\r\n touchendHideDelay: 0\r\n};\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AmpPlayerComponent,\r\n ChatComponent,\r\n RTCVideoComponent,\r\n TimeDifferenceComponent,\r\n StreamErrorsComponent,\r\n DeviceCheckComponent,\r\n MikeKurentoComponent,\r\n TwilioVideoComponent,\r\n JitsiVideoComponent,\r\n LiveStreamingVideoComponent,\r\n KurentoVideoComponent,\r\n EmojiButtonComponent,\r\n ProfileImgUploadComponent,\r\n ByteConvertPipe,\r\n FolderNamePipe,\r\n FileNamePipe,\r\n lastMessagePipe,\r\n FaxFolderNamePipe,\r\n FormatPhoneNumberPipe,\r\n MessageWithLinksPipe,\r\n MessageWithImagePipe,\r\n ChannelFolderPipe,\r\n ConnectionOverlayComponent,\r\n HighlightSearch,\r\n FileStorageComponent,\r\n EventsComponent,\r\n ChannelsHistoryComponent,\r\n ContactsComponent,\r\n AlertsComponent,\r\n ScheduleMeetingComponent,\r\n ChannelCardAvitars,\r\n MeetingInfoComponent,\r\n ChannelInfoComponent,\r\n MeetingDurationPipe,\r\n ChannelOwnerComparePipe,\r\n UserStatusNamePipe,\r\n CreateChannelComponent,\r\n CreateContactComponent,\r\n ContactInfoComponent,\r\n AlertsSettingsComponent,\r\n TimeAgoPipe,\r\n CheckInputLengthPipe,\r\n LoadingHomeComponent,\r\n ManageUsersComponent,\r\n CreateProjectComponent,\r\n StatusDisplayPipe,\r\n DefaultImageOverlayPipe,\r\n CompareStringsPipe,\r\n MediaWidthCheckPipe,\r\n QuickmeetingChannelNamePipe,\r\n GuestSignOutComponent,\r\n AccountEmailInviteComponent,\r\n TestListLengthPipe,\r\n ModalComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n MatTooltipModule,\r\n MatRippleModule,\r\n MatRadioModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n MatSlideToggleModule,\r\n MatSelectModule,\r\n NgxMaskModule.forRoot(),\r\n NgxEditorModule,\r\n NgxMaterialTimepickerModule,\r\n MatExpansionModule,\r\n MatCheckboxModule,\r\n OverlayModule,\r\n ],\r\n exports: [\r\n AmpPlayerComponent,\r\n ChatComponent,\r\n RTCVideoComponent,\r\n CommonModule,\r\n TimeDifferenceComponent,\r\n DeviceCheckComponent,\r\n MikeKurentoComponent,\r\n TwilioVideoComponent,\r\n JitsiVideoComponent,\r\n LiveStreamingVideoComponent,\r\n KurentoVideoComponent,\r\n EmojiButtonComponent,\r\n ProfileImgUploadComponent,\r\n ByteConvertPipe,\r\n FolderNamePipe,\r\n FileNamePipe,\r\n lastMessagePipe,\r\n FaxFolderNamePipe,\r\n FormatPhoneNumberPipe,\r\n MessageWithLinksPipe,\r\n MessageWithImagePipe,\r\n CompareStringsPipe,\r\n FileStorageComponent,\r\n ChannelFolderPipe,\r\n ConnectionOverlayComponent,\r\n HighlightSearch,\r\n EventsComponent,\r\n ChannelsHistoryComponent,\r\n ContactsComponent,\r\n AlertsComponent,\r\n ScheduleMeetingComponent,\r\n ChannelCardAvitars,\r\n MeetingInfoComponent,\r\n ChannelInfoComponent,\r\n MeetingDurationPipe,\r\n ChannelOwnerComparePipe,\r\n UserStatusNamePipe,\r\n MatTooltipModule,\r\n MatRippleModule,\r\n MatRadioModule,\r\n MatDatepickerModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatNativeDateModule,\r\n NgxMaterialTimepickerModule,\r\n NgxEditorModule,\r\n ContactInfoComponent,\r\n TimeAgoPipe,\r\n MatSlideToggleModule,\r\n MatSelectModule,\r\n CheckInputLengthPipe,\r\n LoadingHomeComponent,\r\n ManageUsersComponent,\r\n CreateChannelComponent,\r\n CreateContactComponent,\r\n AlertsSettingsComponent,\r\n CreateProjectComponent,\r\n StatusDisplayPipe,\r\n DefaultImageOverlayPipe,\r\n MediaWidthCheckPipe,\r\n QuickmeetingChannelNamePipe,\r\n GuestSignOutComponent,\r\n MatExpansionModule,\r\n MatCheckboxModule,\r\n AccountEmailInviteComponent,\r\n OverlayModule,\r\n TestListLengthPipe,\r\n ModalComponent,\r\n ],\r\n providers: [\r\n {provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: myCustomTooltipDefaults},\r\n { provide: 'rippleColor', useValue: 'var(--mat-ripple-color)' }, \r\n { provide: OverlayContainer, useClass: FullscreenOverlayContainer },\r\n ]\r\n})\r\nexport class SharedModule { }\r\n","const standardEmailRegex: RegExp = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\nconst passWordRegex: RegExp = /^(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+*!_.=\\\\-]).*$/;\r\n\r\nconst urlRegex: RegExp = /(?:(?:https?|ftp):\\/\\/|www\\.)([\\w_-]+)([\\w.,{}@?^=%&:\\/~+#-]*[\\w@?^=%&\\/~+#-])?/gmi;\r\n\r\nconst aTagBeginRgex: RegExp = /\\/gi; //\"\r\n\r\nconst aTagFullRegex: RegExp = /\\(.*?)\\<\\/a\\>/gi; //click me\"\r\n\r\nconst imgTagRegex: RegExp = /\\/gi;\r\n\r\n// const codeTagRegex: RegExp = /\\(.*?)\\<\\/code\\>/gi;\r\n// const codeTagRegex: RegExp = /\\(.*?)\\<\\/code\\>/gi;\r\nconst codeTagRegex: RegExp = /\\(.*?)\\<\\/code\\>/gi;\r\n\r\n\r\n\r\nconst consoleLogStyle: string = \"background:#8f00f526;color:#31f500;margin:1rem;padding:0rem;outline:2px solid #8f00f5;line-height:2\";\r\n\r\n\r\nexport { \r\n standardEmailRegex, \r\n passWordRegex, \r\n urlRegex, \r\n aTagBeginRgex, \r\n aTagFullRegex, \r\n imgTagRegex, \r\n codeTagRegex, \r\n consoleLogStyle, \r\n};","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { ChannelService } from '../services/channel-service';\r\nimport { ChannelUser } from '../shared/interface/channel-user';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'sidebar-overlay',\r\n templateUrl: './sidebar-overlay.component.html',\r\n styleUrls: ['./sidebar-overlay.component.scss']\r\n})\r\nexport class SidebarOverlayComponent implements OnChanges {\r\n @Input() appType: string;\r\n @Input() userInfo: ChannelUser;\r\n // @Input() pinnedSideBar: boolean;\r\n @Input() sideBarInView: boolean;\r\n\r\n public showSidebar: boolean;//destroys component after time delay\r\n\r\n public appObject: any = {\r\n title: null,\r\n icon: null\r\n };\r\n\r\n constructor(\r\n public _channelService: ChannelService\r\n ) { \r\n this.showSidebar = this.sideBarInView;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.appType) {\r\n let type = changes.appType.currentValue;\r\n if (type === 'apps') {\r\n this.appObject = {\r\n title: \"My Apps\",\r\n icon: \"fas fa-th-large\",\r\n };\r\n } else if (type === 'alerts') {\r\n this.appObject = {\r\n title: \"Alerts\",\r\n icon: \"fas fa-bell\",\r\n };\r\n } else if (type === 'channels') {\r\n this.appObject = {\r\n title: \"Channels\",\r\n icon: \"fas fa-tv-retro\",\r\n redirectLink: \"/channels\"\r\n };\r\n } else if (type === 'contacts') {\r\n this.appObject = {\r\n title: \"My Contacts\",\r\n icon: \"fa-address-book\",\r\n };\r\n } else if (type === 'events') {\r\n this.appObject = {\r\n title: \"My Events\",\r\n icon: \"fas fa-calendar-alt\",\r\n };\r\n } else if (type === 'faxes') {\r\n this.appObject = {\r\n title: \"Faxes\",\r\n icon: \"fas fa-fax\",\r\n redirectLink: \"/fax\"\r\n };\r\n } else if (type === 'files') {\r\n this.appObject = {\r\n title: \"My File Storage\",\r\n icon: \"fas fa-folder-open\",\r\n redirectLink: \"/filestorage\"\r\n };\r\n } else {\r\n this.appObject = {\r\n title: null,\r\n icon: null,\r\n };\r\n }\r\n }\r\n\r\n if (changes.sideBarInView) {\r\n if (!changes.sideBarInView.currentValue) {\r\n // setTimeout(() => {\r\n this.showSidebar = false;\r\n // }, 400);//Was 5000\r\n } else {\r\n this.showSidebar = true;\r\n }\r\n }\r\n }\r\n\r\n closeSideBar() {\r\n this._channelService.sidebarChangeEvent(1, this.appType);\r\n }\r\n\r\n // pinToggle() {\r\n // if (this.pinnedSideBar) {\r\n // this._channelService.sidebarPinEvent(false);\r\n // } else {\r\n // this._channelService.sidebarPinEvent(true);\r\n // }\r\n // }\r\n}\r\n","
\r\n\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t{{ appObject.title }}\r\n\t\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t
\r\n\r\n\t
\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

Coming soon

\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\r\n\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n
\r\n\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ToastNotification, ToastInfoType, ToastWarningType, ToastNotificationType } from \"../toast-notification.model\";\r\nimport { ToastNotificationService } from \"../../services/toast-notification.service\";\r\nimport { toastNotification } from \"../../animations/global-animations\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'toast-notification',\r\n templateUrl: './toast-notification.component.html',\r\n styleUrls: ['./toast-notification.component.scss'],\r\n animations: [toastNotification]\r\n})\r\n\r\nexport class ToastNotificationComponent implements OnInit {\r\n\r\n notifications: ToastNotification[] = [];\r\n private errorSound: any;\r\n private warningSound: any;\r\n public toastContinue = ToastWarningType.Continue;\r\n public toastContinueLink = ToastWarningType.ContinueLink;\r\n\r\n constructor(\r\n public _toastService: ToastNotificationService,\r\n ) {\r\n this._toastService.onToastExamplesEvent$.subscribe(() => this.toastExmples())\r\n }\r\n\r\n ngOnInit() {\r\n this.errorSound = new Audio();\r\n this.errorSound.src = '../../../assets/audio/error00.mp3';\r\n\r\n this.warningSound = new Audio();\r\n this.warningSound.src = '../../../assets/audio/warning00.mp3';\r\n\r\n this.notifications = [];\r\n this._toastService\r\n .getAlert()\r\n .subscribe((alert: ToastNotification) => {\r\n // this.notifications = []; \r\n if (!alert) {\r\n this.notifications = [];\r\n return;\r\n }\r\n\r\n this.audioPlay(alert);\r\n\r\n if (!alert.disableTimeOut) {\r\n setTimeout(() => {\r\n this.notifications = this.notifications.filter(x => x !== alert);\r\n }, 7500);//Was 5000\r\n } else {\r\n this.notifications = this.notifications.filter(x => x.data !== alert.data);\r\n }\r\n\r\n this.notifications.push(alert);\r\n });\r\n\r\n // For Testing Styles\r\n // this.toastExmples();\r\n }\r\n\r\n removeNotification(notification: ToastNotification) {\r\n this.notifications = this.notifications.filter(x => x !== notification);\r\n }\r\n\r\n /**Set css class for Alert -- Called from alert component**/\r\n notificationClass(notification: ToastNotification) {\r\n if (!notification) {\r\n return;\r\n }\r\n switch (notification.type) {\r\n case ToastNotificationType.Success:\r\n return 'toast-success';\r\n case ToastNotificationType.Error:\r\n return 'toast-error';\r\n case ToastNotificationType.Info:\r\n return 'toast-info';\r\n case ToastNotificationType.Warning:\r\n return 'toast-warning';\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n iconClass(notification: ToastNotification) {\r\n if (!notification) {\r\n return;\r\n }\r\n switch (notification.type) {\r\n case ToastNotificationType.Success:\r\n return 'far fa-check';\r\n case ToastNotificationType.Error:\r\n return 'far fa-times';\r\n case ToastNotificationType.Info:\r\n switch (notification.infoType) {\r\n case ToastInfoType.File:\r\n return 'fas fa-file-alt';\r\n default:\r\n return 'fas fa-bell';\r\n }\r\n case ToastNotificationType.Warning:\r\n return 'far fa-exclamation-triangle';\r\n }\r\n }\r\n\r\n audioPlay(notification: ToastNotification) {\r\n // console.log(\"alert type = \", ?); \r\n if (!notification) {\r\n return;\r\n }\r\n switch (notification.type) {\r\n case ToastNotificationType.Success:\r\n return;\r\n case ToastNotificationType.Error:\r\n return this.errorSound.play();\r\n case ToastNotificationType.Info:\r\n switch (notification.infoType) {\r\n case ToastInfoType.Default:\r\n case ToastInfoType.User:\r\n case ToastInfoType.Enter:\r\n case ToastInfoType.Leave:\r\n case ToastInfoType.File:\r\n return;\r\n }\r\n case ToastNotificationType.Warning:\r\n return this.warningSound.play();\r\n }\r\n }\r\n\r\n titleDisplay(notification: ToastNotification) {\r\n if (!notification) {\r\n return;\r\n }\r\n switch (notification.type) {\r\n case ToastNotificationType.Success:\r\n return 'Success';\r\n case ToastNotificationType.Error:\r\n return 'Error';\r\n case ToastNotificationType.Info:\r\n switch (notification.infoType) {\r\n case ToastInfoType.Default:\r\n return 'Info';\r\n case ToastInfoType.User:\r\n case ToastInfoType.Enter:\r\n case ToastInfoType.Leave:\r\n return notification.name;\r\n case ToastInfoType.File:\r\n return 'Channel Files';\r\n default:\r\n return 'Info';\r\n }\r\n case ToastNotificationType.Warning:\r\n return \"Warning\";\r\n }\r\n }\r\n\r\n checkContinue(notification: ToastNotification) {\r\n if (!notification) {\r\n return false;\r\n }\r\n switch (notification.warningType) {\r\n case ToastWarningType.Continue:\r\n case ToastWarningType.ContinueLink:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n resolveToast(notification: ToastNotification) {\r\n let type = notification.data;\r\n this._toastService.completeToastResolveEvent(type, notification.checkboxConfirm);\r\n this.removeNotification(notification);\r\n }\r\n\r\n toastExmples() {\r\n this.notifications = [\r\n {\r\n type: ToastNotificationType.Success,\r\n message: \"Message\",\r\n disableSound: true\r\n },\r\n {\r\n type: ToastNotificationType.Error,\r\n message: \"Message\",\r\n disableSound: true\r\n },\r\n {\r\n type: ToastNotificationType.Info,\r\n message: \"Message\",\r\n disableSound: true\r\n },\r\n {\r\n type: ToastNotificationType.Info,\r\n infoType: ToastInfoType.File,\r\n message: \"Message\",\r\n disableSound: true\r\n },\r\n {\r\n type: ToastNotificationType.Warning,\r\n warningType: ToastWarningType.Continue,\r\n checkboxMessage: \"CheckBox Message\",\r\n checkboxConfirm: false,\r\n message: \"Message\",\r\n disableSound: true\r\n },\r\n ];\r\n }\r\n}\r\n//","
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n {{ titleDisplay(item) }}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {{ item.message }}\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n","export class ToastNotification {\r\n type: ToastNotificationType;\r\n infoType: ToastInfoType;\r\n warningType: ToastWarningType;\r\n message: string;\r\n name: string;\r\n data: string;\r\n checkboxMessage: string;\r\n checkboxConfirm: boolean;\r\n disableTimeOut: boolean;\r\n disableSound: boolean;\r\n}\r\n\r\nexport enum ToastNotificationType {\r\n Success,\r\n Error,\r\n Info,\r\n Warning\r\n}\r\n\r\nexport enum ToastInfoType {\r\n Default,\r\n User,\r\n Enter,\r\n Leave,\r\n File\r\n}\r\n\r\nexport enum ToastWarningType {\r\n Default,\r\n Continue,\r\n ContinueLink\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToastNotificationComponent } from './toast-notification-component/toast-notification.component';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ToastNotificationService } from '../services/toast-notification.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n ToastNotificationComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n BrowserModule,\r\n RouterModule\r\n ],\r\n exports: [ \r\n ToastNotificationComponent \r\n ],\r\n providers: [ \r\n ToastNotificationService \r\n ]\r\n})\r\nexport class ToastNotificationModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\r\nimport { UserSidebarComponent } from './user-sidebar/user-sidebar.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [UserSidebarComponent],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CommonModule,\r\n BrowserModule,\r\n SharedModule\r\n ],\r\n exports: [\r\n UserSidebarComponent\r\n ]\r\n})\r\nexport class UserAppModule { }\r\n","import { Component, OnInit, Output, EventEmitter, Input, OnDestroy, SimpleChanges } from '@angular/core';\r\nimport { AuthService } from '../../core/auth.service';\r\nimport { Constants } from 'src/app/constants';\r\nimport { Router } from '@angular/router';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { ChannelService } from 'src/app/services/channel-service';\r\nimport { FileStorageService } from 'src/app/services/file-storage.service';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { MustMatch } from '../../helpers/must-match.validator';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\nimport { consoleLogStyle, standardEmailRegex } from 'src/app/shared/varaibles';\r\nimport { map } from 'rxjs/operators';\r\n\r\n// File Hierachy\r\n// user-app\r\n// - user-sidebar\r\n// - modal.compont.ts\r\n// - change password component\r\n// - change email \r\n// - change displayname \r\n\r\n@Component({\r\n selector: 'user-sidebar',\r\n templateUrl: './user-sidebar.component.html',\r\n styleUrls: ['./user-sidebar.component.scss']\r\n})\r\nexport class UserSidebarComponent implements OnInit, OnDestroy {\r\n @Output() themeModeSwitch = new EventEmitter();\r\n // @Output() themeColorSwitch = new EventEmitter();\r\n // @Input() pinnedSideBar: boolean;\r\n @Input() themeInit: string;\r\n @Input() userInfo: ChannelUser;\r\n @Input() userStatus: any;\r\n\r\n public themeColor: number;\r\n public themeParams: any = {};\r\n\r\n public showStatusList: boolean = false;\r\n public showAccountList: boolean = false;\r\n public showOrganizationList: boolean = false;\r\n public showThemeList: boolean = false;\r\n\r\n public accountSite = Constants.accountSite;\r\n public gettingStartedSite = Constants.gettingStartedSite;\r\n public adminSite = Constants.adminSite;\r\n\r\n public showPhotoEditor: boolean = false;\r\n public showPasswordEditor: boolean = false;\r\n public showDisplayNameEditor: boolean = false;\r\n public showEmailEditor: boolean = false;\r\n\r\n public displayEmailEditorWarning: boolean = false;\r\n public changeEmail: FormGroup;\r\n public isSubmitingNewEmail: boolean = false;\r\n\r\n public showGettingStartedPage: boolean = false;\r\n public showAdminPage: boolean = false;\r\n\r\n public imgIsUploading: boolean = false;\r\n public isRemovingImg: boolean = false;\r\n\r\n public passwordChange: FormGroup;\r\n public isFormTouched: boolean;\r\n public displayPassword: boolean = false;\r\n public isSubmitingPassword: boolean;\r\n public passwordSubmitted: boolean = false;\r\n public passwordResponse: any = {};\r\n public isCapsOn: boolean;\r\n public isPasswordVisible: boolean = false;\r\n public displayEditPasswordWarning: boolean = false;\r\n\r\n public organizationInfo: any = {\r\n tenantCode: null,\r\n tenantName: null,\r\n userCount: null\r\n }\r\n public initalUserInfoFound: boolean = false;\r\n\r\n public displayNameChange: FormGroup;\r\n public isChangingDisplayName: boolean = false;\r\n public displayEditNameWarning: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _toastService: ToastNotificationService,\r\n private _fileStorageService: FileStorageService,\r\n private _apiCallsService: ApiCallsService,\r\n public _channelService: ChannelService,\r\n public _authService: AuthService,\r\n private _router: Router,\r\n private _fb: FormBuilder,\r\n ) {\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"hidePasswordEditor\") {\r\n this.hidePasswordEditor();\r\n }\r\n if (data.type === \"hideDisplayNameEditor\") {\r\n this.hideDisplayNameEditor();\r\n }\r\n if (data.type === \"hideEmailEditor\") {\r\n this.hideEmailModal();\r\n }\r\n }));\r\n }\r\n\r\n // parentThemeColorSwitch(color) {\r\n // this.themeColorSwitch.emit(color);\r\n // }\r\n\r\n parentThemeModeSwitch(theme: string) {\r\n this.themeModeSwitch.emit(theme);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.userInfo) {\r\n if (changes.userInfo.currentValue.channelUserId && !this.initalUserInfoFound) {\r\n this._getTenantInfo();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n\r\n // routeToSupportPage() {\r\n // this._router.navigate(['/support']);\r\n // }\r\n\r\n routeToAccountSettings() {\r\n this._router.navigate(['/alert-settings']);\r\n }\r\n\r\n signOut() {\r\n this._authService.signOut();\r\n }\r\n\r\n mediaCheck() {\r\n // let mediaWidth = 1248;//Small-Desktop\r\n let mediaWidth = 1024;//Tablet-Wide\r\n let mediaQuery = window.matchMedia(`(max-width: ${mediaWidth - 1}px)`);\r\n return mediaQuery.matches\r\n }\r\n\r\n changeStatus(status:number) {\r\n if (status === 0) {\r\n this._channelService.sendMessageToChannel(\"/active\", null);\r\n } else if (status === 1) {\r\n this._channelService.sendMessageToChannel(\"/invisible\", null);\r\n } else if (status === 2) {\r\n this._channelService.sendMessageToChannel(\"/dnd\", null);\r\n } else if (status === 3) {\r\n this._channelService.sendMessageToChannel(\"/brb\", null);\r\n }\r\n this.showStatusList = false;\r\n }\r\n\r\n expandStatusList() {\r\n this.showStatusList = (this.showStatusList) ? false : true;\r\n }\r\n\r\n changeTheme(theme:string) {\r\n this.themeInit = theme;\r\n this.parentThemeModeSwitch(theme);\r\n }\r\n\r\n expandThemeList() {\r\n this.showThemeList = (this.showThemeList) ? false : true;\r\n }\r\n\r\n displayPhotoEditor() {\r\n this.showPhotoEditor = true;\r\n }\r\n\r\n displayPhotoEditorInput() {\r\n let hiddenFileInput = document.getElementById('file-upload');\r\n hiddenFileInput.click();\r\n }\r\n\r\n hidePhotoEditor() {\r\n this.showPhotoEditor = false;\r\n // stop image upload on hide if still loading\r\n if (this.imgIsUploading == true) {\r\n this.imgIsUploading = false;\r\n }\r\n }\r\n\r\n displayPasswordEditor() {\r\n this.createPasswordForm();\r\n this.showPasswordEditor = true;\r\n }\r\n\r\n hidePasswordEditor() {\r\n this.showPasswordEditor = false;\r\n this.displayPassword = false;\r\n this.passwordSubmitted = false;\r\n this.passwordResponse = {};\r\n this.isCapsOn = false;\r\n this.isPasswordVisible = false;\r\n }\r\n\r\n hidePasswordEditorConfirm() {\r\n if (this.displayEditPasswordWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"hidePasswordEditor\");\r\n } else {\r\n this.hidePasswordEditor();\r\n }\r\n }\r\n\r\n displayDisplayNameEditor() {\r\n this.createDisplayNameForm();\r\n this.showDisplayNameEditor = true;\r\n }\r\n\r\n hideDisplayNameEditor() {\r\n this.showDisplayNameEditor = false;\r\n }\r\n\r\n hideDisplayNameEditorConfirm() {\r\n if (this.displayEditNameWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"hideDisplayNameEditor\");\r\n } else {\r\n this.hideDisplayNameEditor();\r\n }\r\n }\r\n\r\n expandAccountList() {\r\n this.showAccountList = (this.showAccountList) ? false : true;\r\n }\r\n\r\n toggleOrganizationList() {\r\n this.showOrganizationList = (this.showOrganizationList) ? false : true;\r\n }\r\n\r\n hideGettingStartedPage() {\r\n this.showGettingStartedPage = false;\r\n }\r\n\r\n displayGettingStartedPage() {\r\n this.showGettingStartedPage = true;\r\n }\r\n\r\n hideAdminPage() {\r\n this.showAdminPage = false;\r\n }\r\n\r\n displayAdminPage() {\r\n this.showAdminPage = true;\r\n }\r\n\r\n displayEmailModal() {\r\n this.createEmailForm();\r\n this.showEmailEditor = true;\r\n }\r\n\r\n hideEmailModal() {\r\n this.showEmailEditor = false;\r\n this.changeEmail.reset();\r\n }\r\n\r\n hideEmailModalConfirm() {\r\n if (this.displayEmailEditorWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"hideEmailEditor\");\r\n } else {\r\n this.hideEmailModal();\r\n }\r\n }\r\n\r\n clickOffUserSidebarModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n }\r\n switch (value) {\r\n case 'photo-editor-modal': {\r\n this.hidePhotoEditor();\r\n break;\r\n }\r\n case 'email-editor-modal': {\r\n if (this.displayEmailEditorWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"hideEmailEditor\");\r\n } else {\r\n this.hideEmailModal();\r\n }\r\n break;\r\n }\r\n case 'password-editor-modal': {\r\n if (this.displayEditPasswordWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"hidePasswordEditor\");\r\n } else {\r\n this.hidePasswordEditor();\r\n }\r\n break;\r\n }\r\n case 'display-name-editor-modal': {\r\n if (this.displayEditNameWarning) {\r\n this._toastService.continue(\"You are about lose all progress, are you sure you want to close this form?\", \"hideDisplayNameEditor\");\r\n } else {\r\n this.hideDisplayNameEditor();\r\n }\r\n break;\r\n }\r\n case 'admin-page-modal': {\r\n this.hideAdminPage();\r\n break;\r\n }\r\n default: return;\r\n }\r\n }\r\n\r\n _getTenantInfo() {\r\n this._authService.getOrganizationInfoByUserId(this.userInfo.channelUserId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.organizationInfo = res.body;\r\n // console.log(\"Org Info!!!\", this.organizationInfo);\r\n this.initalUserInfoFound = true;\r\n } else {\r\n console.error(\"tenant info error\", res);\r\n }\r\n });\r\n }\r\n\r\n profileImgChange(status: boolean) {\r\n if (status === true) {\r\n this.imgIsUploading = status;\r\n } else {\r\n this.imgIsUploading = status;\r\n // console.log(\"emmiter worked\")\r\n // this._authService.channelUserInfoHasUpdated();\r\n }\r\n }\r\n\r\n _removeProfilePhoto() {\r\n this.isRemovingImg = true;\r\n this._fileStorageService.fileStorageProfileDelete(this.userInfo.channelUserId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n this.isRemovingImg = false;\r\n this.userInfo.hash = '1';\r\n // console.log(\"remove success\", res);\r\n // this._authService.channelUserInfoHasUpdated();\r\n this._authService.userHashBehaviorSubject.next('1');\r\n } else {\r\n console.error(\"remove error\", res);\r\n this.isRemovingImg = false;\r\n this._toastService.error('There was an error removing this photo.')\r\n }\r\n });\r\n }\r\n\r\n completeProfileImageSubmit(newHash:string) {\r\n // console.info('new hash', newHash)\r\n this.userInfo.hash = newHash;\r\n }\r\n\r\n createPasswordForm() {\r\n this.isFormTouched = false;\r\n this.displayEditPasswordWarning = false;\r\n let userId = this.userInfo.channelUserId;\r\n this.passwordChange = this._fb.group({\r\n userId: [userId],\r\n currentPassword: ['', [Validators.required]],\r\n newPassword: ['', [Validators.required, Validators.minLength(8), Validators.pattern(\"^(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+*!=-_.]).*$\")]],\r\n confirmNewPassword: ['', Validators.required]\r\n }, {\r\n validator: MustMatch('newPassword', 'confirmNewPassword')\r\n });\r\n \r\n this.subscriptions.push(this.passwordChange.valueChanges.subscribe(data => {\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.displayEditPasswordWarning = true;\r\n }\r\n }));\r\n }\r\n\r\n createDisplayNameForm() {\r\n // console.log('is form ted', this.isFormTouched)\r\n this.isFormTouched = false;\r\n this.displayEditNameWarning = false;\r\n this.displayNameChange = this._fb.group({\r\n displayName: ['', [Validators.required, Validators.minLength(2), Validators.pattern(/^[a-zA-Z'.-\\s]*$/)]]\r\n });\r\n this.subscriptions.push(this.displayNameChange.valueChanges.subscribe(data => {\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.displayEditNameWarning = true;\r\n }\r\n }));\r\n }\r\n\r\n submitPasswordChange() {\r\n this.isSubmitingPassword = true;\r\n this._authService.changePassword(this.passwordChange.value)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n if (res.body.returnValue === true) {\r\n this.isSubmitingPassword = false;\r\n // console.log('Password Change submitted!');\r\n this.passwordResponse = {\r\n success: true,\r\n message: \"\"\r\n }\r\n // this.createPasswordForm();\r\n this._toastService.success('Your password has been changed')\r\n this.hidePasswordEditor();\r\n this.passwordChange.reset();\r\n } else {\r\n //if old password is wrong\r\n this.isSubmitingPassword = false;\r\n this.passwordResponse = {\r\n success: false,\r\n message: \"The current password you have entered is incorrect\"\r\n }\r\n // console.log(res)\r\n }\r\n } else if (res.status === 422) {\r\n this.isSubmitingPassword = false;\r\n this.passwordResponse = {\r\n success: false,\r\n message: \"New password can not be the same as your previous 5 passwords\"\r\n }\r\n } else {\r\n this.isSubmitingPassword = false;\r\n this.passwordResponse = {\r\n success: false,\r\n message: \"An error has occured while changing your password\"\r\n }\r\n // console.log(res)\r\n }\r\n this.passwordSubmitted = true;\r\n });\r\n }\r\n\r\n capsLockCheck(e: any) {\r\n if (e.keyCode) {\r\n e.getModifierState('CapsLock') ?\r\n this.isCapsOn = true :\r\n this.isCapsOn = false;\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n showPasswordText() {\r\n this.isPasswordVisible = (this.isPasswordVisible) ? false : true;\r\n }\r\n\r\n get pc() { return this.passwordChange.controls; }\r\n\r\n submitDisplayName() {\r\n this.isChangingDisplayName = true;\r\n let nameObject: any = {\r\n \"op\": \"replace\",\r\n \"path\": \"/displayName\",\r\n \"value\": this.displayNameChange.value.displayName\r\n };\r\n this._apiCallsService.patchChannelUser(this._authService._user.profile.sub, nameObject)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this.showDisplayNameEditor = false;\r\n this._toastService.success(`Your Display Name has been changed to ${nameObject.value}`);\r\n this.userInfo.displayName = nameObject.value;\r\n this._authService.displayNameBehaviorSubject.next(nameObject.value);\r\n this.isChangingDisplayName = false;\r\n } else {\r\n this._toastService.error(\"There was an error changing display name.\");\r\n this.isChangingDisplayName = false;\r\n }\r\n });\r\n }\r\n\r\n get dnc() { return this.displayNameChange.controls; }\r\n\r\n closeSideBar() {\r\n this._channelService.sidebarChangeEvent(3);//For User Profile\r\n }\r\n\r\n copyCode() {\r\n navigator.clipboard.writeText(this.organizationInfo.tenantCode);\r\n }\r\n\r\n createEmailForm() {\r\n this.isFormTouched = false;\r\n this.displayEmailEditorWarning = false;\r\n this.changeEmail = this._fb.group({\r\n newEmail: [\"\", [Validators.required, Validators.pattern(standardEmailRegex)]]\r\n });\r\n this.subscriptions.push(this.changeEmail.valueChanges.subscribe(data => {\r\n if(!this.isFormTouched) {\r\n this.isFormTouched = true;\r\n this.displayEmailEditorWarning = true;\r\n }\r\n }));\r\n }\r\n\r\n get emailc() { return this.changeEmail.controls; }\r\n\r\n changeUserEmail() {\r\n this.isSubmitingNewEmail = true;\r\n let emailObject = {\r\n \"value\": this.changeEmail.value.newEmail,\r\n \"path\": \"/email\",\r\n \"op\": \"replace\",\r\n };\r\n this._authService.patchUser(emailObject)\r\n .pipe(map(res => {\r\n // console.info('patch email res', res);\r\n this._toastService.success(`Your email has been changes to ${emailObject.value}`);\r\n this.hideEmailModal();\r\n this.userInfo.email = emailObject.value;\r\n return res;\r\n }))\r\n .subscribe(\r\n ()=> {},\r\n err => {\r\n console.error('email error from sub', err)\r\n // add inline error ... \r\n\r\n this.isSubmitingNewEmail = false;\r\n }, () => {\r\n // console.info(\"finally sub done\")\r\n this.isSubmitingNewEmail = false;\r\n }\r\n );\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
Profile Manager
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {{ userInfo.displayName }}\r\n

\r\n \r\n {{ userInfo.username }}\r\n

\r\n \r\n {{ userInfo.email }}\r\n

\r\n
\r\n
\r\n
\r\n \r\n \r\n {{ userStatus | statusDisplay }}\r\n \r\n

\r\n
\r\n

\r\n \r\n Online\r\n

\r\n

\r\n \r\n Invisible\r\n

\r\n

\r\n \r\n Do Not Disturb\r\n

\r\n

\r\n \r\n Be Right Back\r\n

\r\n \r\n
\r\n\r\n \r\n \r\n Account Settings\r\n \r\n

\r\n
\r\n

\r\n Change Password\r\n

\r\n

\r\n Change Display Name\r\n

\r\n

\r\n Change Email\r\n

\r\n
\r\n\r\n \r\n \r\n Organization Info\r\n \r\n

\r\n
\r\n

Name: {{ organizationInfo.tenantName }}

\r\n \r\n Invite Code: {{ organizationInfo.tenantCode }}\r\n

\r\n

Users: {{ organizationInfo.userCount }}

\r\n
\r\n\r\n \r\n \r\n Theme Manager\r\n \r\n

\r\n
\r\n \r\n Dark Mode\r\n

\r\n \r\n Light Mode\r\n

\r\n \r\n Reader Mode\r\n

\r\n
\r\n\r\n \r\n \r\n How To Get Started\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Alert Settings\r\n \r\n \r\n \r\n Admin Panel\r\n \r\n\r\n \r\n\r\n

Sign Out

\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n Upload Photo\r\n \r\n \r\n Change Photo\r\n \r\n \r\n  Updating Photo\r\n \r\n \r\n \r\n \r\n Remove Photo\r\n \r\n \r\n  Removing Photo\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n

Change Password

\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n

Password must contain 8 characters, including...

\r\n
    \r\n

    • at least one uppercase letter

    \r\n

    • at least one lowercase letter

    \r\n

    • at least one number

    \r\n

    • at least one symbol

    \r\n
\r\n
\r\n \r\n \r\n \r\n New Password is required\r\n
\r\n \r\n New Password must be at least 8 characters\r\n \r\n \r\n \r\n \r\n \r\n Confirm New Password is required\r\n \r\n \r\n Confirm New Passwords must match\r\n \r\n \r\n
\r\n
\r\n ⚠️ Caps lock is on.\r\n
\r\n
\r\n \r\n

{{ passwordResponse.message }}

\r\n \r\n \r\n \r\n Update Password\r\n \r\n \r\n  Updating...\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n
\r\n

Change Email

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n • {{userInfo.email}}\r\n
\r\n
\r\n \r\n Must be a valid email.\r\n
\r\n
\r\n \r\n \r\n Update Email\r\n \r\n \r\n  Updating...\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n
\r\n

Change Display Name

\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n Name must be at least 2 characters.\r\n
\r\n \r\n Possibly including a hyphen, apostrophe, and/or period.\r\n
\r\n \r\n \r\n \r\n Update Display Name\r\n \r\n \r\n  Updating...\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n
\r\n

VIA3 Unity Guide

\r\n \r\n
\r\n \r\n \r\n\r\n\r\n\r\n\r\n
\r\n
\r\n

Open Admin Panel

\r\n \r\n
\r\n
\r\n \r\n \r\n Continue Here \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { VdjjVideoIntakeHomepageComponent } from './vdjj-video-intake-homepage/vdjj-video-intake-homepage.component';\r\n\r\n//import { AuthGuard } from '../core/authguard';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot([\r\n { path: 'vdjjvideointakeapp', component: VdjjVideoIntakeHomepageComponent },\r\n { path: 'intakeapp/:tenant', component: VdjjVideoIntakeHomepageComponent },\r\n { path: 'medicalapp/:tenant/:type', component: VdjjVideoIntakeHomepageComponent },\r\n]\r\n// ,\r\n// { onSameUrlNavigation: 'reload' }\r\n, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class VdjjVideoIntakeAppRoutingModule { }\r\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { VdjjVideoIntakeAppRoutingModule } from './vdjj-video-intake-app-routing.module';\r\nimport { VdjjVideoIntakeHomepageComponent } from './vdjj-video-intake-homepage/vdjj-video-intake-homepage.component';\r\nimport { VdjjVideoIntakeChatAOComponent } from './vdjj-video-intake-chat-ao/vdjj-video-intake-chat-ao.component';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { VdjjVideoIntakeChatIoComponent } from './vdjj-video-intake-chat-io/vdjj-video-intake-chat-io.component';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n VdjjVideoIntakeHomepageComponent,\r\n VdjjVideoIntakeChatAOComponent,\r\n VdjjVideoIntakeChatIoComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n FormsModule,\r\n VdjjVideoIntakeAppRoutingModule,\r\n ReactiveFormsModule,\r\n SharedModule\r\n ],\r\n exports: [\r\n VdjjVideoIntakeChatAOComponent\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class VdjjVideoIntakeAppModule { }\r\n","import { Component, OnInit, Output, EventEmitter, OnDestroy, ViewChild } from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { ChannelService } from '../../services/channel-service';\r\nimport { AppIntakeService } from '../../../../src/app/services/app-intake.service';\r\nimport { VdjjVideoIntakeHomepageComponent } from '../vdjj-video-intake-homepage/vdjj-video-intake-homepage.component';\r\nimport { ApiCallsService } from '../../../../src/app/services/api-calls.service';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { Router } from '@angular/router';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { ChannelFull } from 'src/app/shared/interface/channel-full';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'vdjj-video-intake-chat-ao',\r\n templateUrl: './vdjj-video-intake-chat-ao.component.html',\r\n styleUrls: ['./vdjj-video-intake-chat-ao.component.scss']\r\n})\r\nexport class VdjjVideoIntakeChatAOComponent implements OnInit, OnDestroy {\r\n @Output() connectionStatus = new EventEmitter();\r\n private onPopulateMessagesEvent = new Subject();\r\n onPopulateMessagesEvent$ = this.onPopulateMessagesEvent.asObservable();\r\n\r\n public sessionReady: boolean = false;\r\n public showPage: boolean = false;// Set to true after intakeSessionUSer is confirmed\r\n public sessionPrevent: boolean = false;//Temp to prevent session from being started too many times\r\n\r\n public _app: any = {};\r\n public _customizations: any = {};\r\n public _officer: any = {};\r\n public _officerSessionData: any = {};\r\n public _channels: any = {};\r\n public _intakeSession: any = {};\r\n public _tenant: any = '';\r\n\r\n public chatShow: boolean = true;\r\n public showText: string = 'Chat Message Box';\r\n public formShow: boolean = false;\r\n public formsButtonText: string = 'Forms';\r\n public notificationForm: any = {\r\n \"SMSNumber\": \"\",\r\n \"email\": \"\"\r\n };\r\n\r\n public officerList: any = [];//Intake Officer Schedule\r\n public chatList: any = [];\r\n\r\n public channelId: string;\r\n public teamProjectId: string;\r\n public videoType: string;\r\n\r\n public formSelected: boolean = false;\r\n\r\n //for Medical\r\n public isMedical = this._intakeGlobal.isMedical;\r\n\r\n //for Jitsi\r\n public videoPreventList: any = ['startVideo', 'record', 'user', 'chat'];\r\n\r\n //temp for files\r\n public _showFiles: boolean = false\r\n public channelInfo: ChannelFull;\r\n public onlineForms: any = []; // ❌ not in use ? ... \r\n\r\n //for Iframe\r\n // public iframe: any = null;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n // ❌ moved this bool from *ngFor, see 'local variables' - for forms always false ... \r\n // https://v2.angular.io/docs/ts/latest/api/common/index/NgFor-directive.html\r\n public show: boolean = false;\r\n\r\n\r\n constructor(\r\n private _channelService: ChannelService,\r\n private _apiCallsService: ApiCallsService,\r\n private _intakeService: AppIntakeService,\r\n private _chManageService: ProjectChannelService,\r\n private _intakeGlobal: VdjjVideoIntakeHomepageComponent,\r\n // private sanitizer: DomSanitizer,\r\n private router: Router,\r\n private _toastService: ToastNotificationService,\r\n ) {\r\n // new for files events ... \r\n this.subscriptions.push(this._channelService.onSharedFileUploadCompletedEvent$.subscribe((fileUploadObj: any) => {\r\n if (fileUploadObj !== null) {\r\n // console.log(fileUploadObj.channelId.toLowerCase() === this.channelId.toLowerCase());\r\n if(fileUploadObj.channelId.toLowerCase() === this.channelId.toLowerCase()) {\r\n this._toastService.file(fileUploadObj.uploaderDisplayName + \" has uploaded \" + fileUploadObj.fileName);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onSharedFileDeleteCompletedEvent$.subscribe((fileDeleteObj: any) => {\r\n if (fileDeleteObj !== null) {\r\n if(fileDeleteObj.channelId.toLowerCase() === this.channelId.toLowerCase()) {\r\n this._toastService.file(fileDeleteObj.displayName + \" has deleted \" + fileDeleteObj.fileName);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUpdateSessionUsersEvent$.subscribe(() => {\r\n this._getIntakeSessionUserByIntakeUser();\r\n this._getChannelUsersInRoom();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onIntakeSessionEndedEvent$.subscribe((channelId: any) => {\r\n this._channelService.hangUpCallEvent();\r\n this._getIntakeSessionUserByIntakeUser();\r\n this.sessionReady = false; //shows the begin session dialouge \r\n this._showFiles = false;\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUpdateUserStatusEvent$.subscribe((channelUserStatusList: any) => {\r\n this.chatList.forEach((officer) => {\r\n channelUserStatusList.forEach((channelUser) => {\r\n if (officer.channelUserId === channelUser.channelUserId) {\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n officer.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n officer.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n officer.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n officer.userStatus = \"hidden\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n officer.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n officer.userStatus = \"brb\";\r\n }\r\n }\r\n });\r\n });\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJoinNotification$.subscribe((joinObj: any) => {\r\n //this._getAllIntakeSessionUsers();\r\n this._getChannelUsersInRoom();\r\n if (joinObj.showJoinNotification == true) {\r\n if (this.channelId.toLowerCase() === joinObj.channelId.toLowerCase()) {\r\n this._toastService.enter(joinObj.displayname);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUserLeaveEvent$.subscribe((userObj: any) => {\r\n this._getChannelUsersInRoom();\r\n \r\n if (this.channelId.toLowerCase() === userObj.channelId.toLowerCase()) {\r\n this._toastService.leave(userObj.displayname);\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onGetChannelUsersInRoomEvent$.subscribe(() => {\r\n this._getChannelUsersInRoom();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUpdateScheduleEvent$.subscribe(() => {\r\n this._getAllIntakeOfficerShiftLogs();\r\n if (this.channelId) {\r\n this._getChannelUsersInRoom();\r\n }\r\n }));\r\n\r\n document.addEventListener(\"visibilitychange\", this.onVisibilityChange);\r\n }\r\n\r\n ngOnInit() {\r\n //console.log(\"url: \" + this.router.url);\r\n this._customizations = {\r\n \"officerSelectMessage\": {\r\n // \"value\": \"Please select an available intake officer, if none are available please call the office on call at 555-555-5555\"\r\n \"value\": \"\"\r\n },\r\n \"instructionList\": [],\r\n \"instructionListSubs\": []\r\n };\r\n this._officer = this._intakeGlobal.officerData\r\n this._app = this._intakeGlobal._app\r\n this._intakeSession = this._intakeGlobal._intakeSession;\r\n this._tenant = this._intakeGlobal._tenant;\r\n this.channelInfo = this._intakeGlobal.channelInfo;\r\n this.channelId = this.channelInfo.channelId;\r\n this.teamProjectId = this._intakeGlobal._teamProjectId;\r\n this.videoType = this.channelInfo.videoType;\r\n if (this.videoType === null || this.videoType === 'kurento') {\r\n this.videoType = 'jitsi';\r\n }\r\n this._getIntakeSessionUserByIntakeUser();\r\n this._getAppCustomizations();\r\n this._getAllIntakeOfficerShiftLogs();\r\n // this._getChannelInfo(); // ? \r\n this.notificationFormInit();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n document.removeEventListener(\"visibilitychange\", this.onVisibilityChange);\r\n return this._channelService.leave(this.channelId);\r\n }\r\n\r\n notificationFormInit() {\r\n this.notificationForm = {\r\n \"firstName\": \"\",\r\n \"lastName\": \"\",\r\n \"email\": \"\",\r\n \"SMSNumber\": \"\",\r\n \"displaySchedule\": \"\",\r\n \"location\": \"\",\r\n \"hasDownloadedForms\": false,\r\n \"hasFaxedForms\": false,\r\n \"videoIntakeComplete\": false,\r\n \"active\": true\r\n };\r\n }\r\n\r\n _getAppCustomizations() {\r\n this._intakeService.getAppCustomizations(this._app.appId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let customs = data.body;\r\n //console.log(\"🔷 customs?\", customs)\r\n customs.forEach(custom => {\r\n if (custom.section === \"OfficerSelectMessage\") {\r\n this._customizations.officerSelectMessage = custom;\r\n } else if (custom.section === \"InstructionList\") {\r\n this._customizations.instructionList.push(custom);\r\n this._customizations.instructionListSubs.push([]);\r\n }\r\n });\r\n customs.forEach(custom => {\r\n if (custom.section === \"InstructionListSub1\") {\r\n this._customizations.instructionListSubs[0].push(custom);\r\n } else if (custom.section === \"InstructionListSub2\") {\r\n this._customizations.instructionListSubs[1].push(custom);\r\n } else if (custom.section === \"InstructionListSub3\") {\r\n this._customizations.instructionListSubs[2].push(custom);\r\n } else if (custom.section === \"InstructionListSub4\") {\r\n this._customizations.instructionListSubs[3].push(custom);\r\n } else if (custom.section === \"InstructionListSub5\") {\r\n this._customizations.instructionListSubs[4].push(custom);\r\n }\r\n });\r\n } else {\r\n console.error(\"error getting app customizations\", data)\r\n }\r\n });\r\n }\r\n\r\n _getAllIntakeOfficerShiftLogs() {\r\n console.log(\"getting officer schedulals......\")\r\n this._intakeService.getAllOnShiftIntakeOfficerShiftLogs(this._intakeSession.intakeSessionId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n // console.log(\"officer schedulal?\", data)\r\n this.officerList = [];\r\n let shiftLog = data.body;\r\n shiftLog.forEach(log => {\r\n log.startTime = new Date(log.startTime);\r\n log.startTime.setMinutes(log.startTime.getMinutes() - log.startTime.getTimezoneOffset()); //Converts back to Local\r\n log.endTime = new Date(log.endTime);\r\n log.endTime.setMinutes(log.endTime.getMinutes() - log.endTime.getTimezoneOffset()); //Converts back to Local\r\n this.officerList.push(log)\r\n });\r\n console.log(\"officer schedulal log set\", this.officerList)\r\n // this.officerList = data.body;\r\n } else {\r\n console.error(\"error getting officer shift logs\", data)\r\n }\r\n });\r\n }\r\n\r\n _getChannelUsersInRoom() {\r\n // console.log(\"\")\r\n this._chManageService.getChannelUsersInRoomByChannelId(this.channelId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n this.chatList = [];\r\n let chatList = data.body;\r\n let _officerId = this._officer.chatUserKeyNavigation.channelUserId;\r\n chatList.sort(function (x, y) { return x.channelUserId == _officerId ? -1 : y.channelUserId == _officerId ? 1 : 0; });\r\n this.chatList = chatList;\r\n this.chatList.forEach(officer => { \r\n let channelUser = officer.chatUserKeyNavigation;\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n officer.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n officer.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n officer.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n officer.userStatus = \"hidden\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n officer.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n officer.userStatus = \"brb\";\r\n }\r\n this.officerList.forEach(log => {\r\n // console.log(officer.chatUserKeyNavigation.channelUserId);\r\n // console.log(log.intakeUserKeyNavigation.chatUserKeyNavigation.channelUserId);\r\n if (officer.chatUserKeyNavigation.channelUserId === log.intakeUserKeyNavigation.chatUserKeyNavigation.channelUserId) {\r\n officer.startTime = log.startTime;\r\n officer.endTime = log.endTime;\r\n }\r\n });\r\n });\r\n console.log(\"officers list from get users in room\", this.chatList)\r\n } else {\r\n console.error(\"error getting users in room\", data)\r\n }\r\n });\r\n }\r\n\r\n _getIntakeSessionUserByIntakeUser() {\r\n this._intakeService.getIntakeSessionUserByIntakeUserAndActive(this._officer.intakeUserId, this._intakeSession.intakeSessionId)\r\n .subscribe(data => {\r\n // alert(JSON.stringify(data));\r\n if (data.status === 200) {\r\n if (data.body.length > 0) {\r\n this._officerSessionData = data.body[0];\r\n this.startSession();\r\n //Temp for Iframe\r\n // this.iframe = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n // \"../../../assets/jitsi/meeting.html?username=\" +\r\n // this._officerSessionData.displayName +\r\n // \"&channelname=\" +\r\n // this.channelId\r\n // );\r\n } else {\r\n this._officerSessionData = null;\r\n }\r\n } else {\r\n console.error(\"error getting intake session\", data);\r\n }\r\n this.showPage = true;\r\n });\r\n }\r\n\r\n // actual button for starting session\r\n _postIntakeUserSession() {\r\n this.notificationForm.intakeSessionId = this._intakeSession.intakeSessionId;\r\n this.notificationForm.chatRoomId = this.channelId;\r\n this.notificationForm.intakeUserId = this._officer.intakeUserId;\r\n if (this.notificationForm.firstName) {\r\n this.notificationForm.displayName = this.notificationForm.firstName;\r\n if (this.notificationForm.lastName) {\r\n this.notificationForm.displayName = this.notificationForm.displayName + \" \" + this.notificationForm.lastName\r\n }\r\n } else if (!this.notificationForm.firstName && this.notificationForm.lastName) {\r\n this.notificationForm.displayName = this.notificationForm.lastName;\r\n } else {\r\n this.notificationForm.displayName = this._officer.chatUserKeyNavigation.displayName;\r\n }\r\n //console.log(this.notificationForm);\r\n if (!this.sessionPrevent) {\r\n this.sessionPrevent = true;\r\n this._channelService.postIntakeSessionUser(this.notificationForm, this._app.appId, this.router.url);\r\n }\r\n }\r\n\r\n startSession() {\r\n this.sessionReady = true;\r\n this.sessionPrevent = false;\r\n }\r\n\r\n // show instructions //\r\n public switchChat() {\r\n if (this.chatShow === true) {\r\n this.chatShow = false;\r\n this.formShow = false;\r\n this.showText = 'Instruction List';\r\n this.formsButtonText = 'Forms';\r\n } else {\r\n this.chatShow = true;\r\n this.formShow = false;\r\n this.showText = 'Chat Message Box';\r\n this.formsButtonText = 'Forms';\r\n }\r\n }\r\n\r\n public switchChatForms() {\r\n if (this.formShow == true) {\r\n this.chatShow = false;\r\n this.formShow = false;\r\n this.showText = 'Instruction List';\r\n this.formsButtonText = 'Forms';\r\n } else {\r\n this.chatShow = false;\r\n this.formShow = true;\r\n this.formsButtonText = 'Chat Message Box';\r\n this.showText = 'Instruction List';\r\n this.formSelected = false;\r\n this.getOnlineForms();\r\n }\r\n }\r\n\r\n showFilesModal() {\r\n this._showFiles = (this._showFiles) ? false : true;\r\n }\r\n\r\n // x why ... \r\n setOnlineForms(data){\r\n data.forEach((element) => {\r\n this.onlineForms.push(element.formTemplateKeyNavigation);\r\n });\r\n }\r\n\r\n getOnlineForms() {\r\n this._apiCallsService.getSpecificOnlineFormsForChannel(this.channelId)\r\n .subscribe(data => {\r\n this.onlineForms = [];\r\n this.setOnlineForms(data.body);\r\n //console.log(this.onlineForms);\r\n });\r\n }\r\n\r\n onVisibilityChange() {\r\n if(this.channelId) {\r\n if (document.hidden) {\r\n console.log(\"Hidden \" + this.channelId);\r\n this._channelService.sendCommand(\"/leave\", this.channelId);\r\n }\r\n else {\r\n console.log(\"SHOWN \" + this.channelId);\r\n this._channelService.join(this.channelId);\r\n }\r\n }\r\n }\r\n\r\n // new file store 2.0 ...\r\n // to close all modals | add switch if needed to close milti ... \r\n clickOffModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n // console.log(\"%c e.t, e.srcel, e.curtar \", consoleLogStyle, event.target, event.srcElement, event.currentTarget)\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n // console.log(\"%c tar.id? ,val? \", consoleLogStyle, idAttr, value)\r\n }\r\n switch (value) {\r\n case 'intake-files-modal': {\r\n this.showFilesModal();\r\n break;\r\n }\r\n default: return;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n// ❌ old file storage funcs ... \r\n\r\n // uploadChange(isUploading:boolean) {\r\n // this.fileIsUploading = isUploading;\r\n // }\r\n\r\n //temp files\r\n // filesInit() {\r\n // this.downloadFile = {\r\n // \"roomOwnerUserId\": \"\",\r\n // \"channelId\": \"\",\r\n // \"path\": \"\",\r\n // \"rev\": \"\"\r\n // };\r\n // }\r\n\r\n // selectForm(){\r\n // this.formSelected = !this.formSelected;\r\n // }\r\n\r\n // _downloadSharedFile(filePath: string, fileName: string) {\r\n // this.downloadFile.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n // this.downloadFile.path = filePath;\r\n // this.downloadFile.channelId = this.channelInfo.channelId;\r\n // this._fileStorageService.fileStorageDownloadSharedFile(this.downloadFile)\r\n // .subscribe(data => {\r\n // if (data.status === 200) {\r\n // console.log(data);\r\n // // window.open(data.body, '_blank') //open\r\n // this.createDownloadElement(data.body, fileName);\r\n // this.filesInit();\r\n // } else {\r\n // console.error(\"error downloading file\", data);\r\n // }\r\n // });\r\n // }\r\n\r\n // createDownloadElement(link: any, name:string) {\r\n // console.log(\"downloading file: \", name)\r\n // var element = document.createElement('a');\r\n // element.setAttribute('href', link);\r\n // element.setAttribute('download', link);\r\n // element.setAttribute('target', '_blank');\r\n // element.style.display = 'none';\r\n // document.body.appendChild(element);\r\n // element.click();\r\n // document.body.removeChild(element);\r\n // }\r\n\r\n // _sharedFileList() {\r\n // this.sharedFileListQuery.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n // // if (this.isMedical) {\r\n // // this.sharedFileListQuery.projectName = this._tenant.toUpperCase() + \"EMS\";\r\n // // } else {\r\n // // this.sharedFileListQuery.projectName = this._tenant.toUpperCase() + \"IntakeApp\";\r\n // // }\r\n // this.sharedFileListQuery.projectName = this.channelInfo.teamProjectKeyNavigation.name;\r\n // this.sharedFileListQuery.roomName = this.channelInfo.name;\r\n // this._fileStorageService.listSharedFiles(this.sharedFileListQuery)\r\n // .subscribe(data => {\r\n // if (data.status === 200) {\r\n // this.fileList = data.body.entries;\r\n // // alert(JSON.stringify(data));\r\n // } else {\r\n // console.error(\"error getting files list\", data);\r\n // }\r\n // });\r\n // }\r\n\r\n // _softDeleteFile(filePath: string) {\r\n // this._fileStorageService.softDeleteFile(filePath, this.channelInfo.channelId)\r\n // .subscribe(res => {\r\n // // alert(JSON.stringify(res));\r\n // this._sharedFileList();\r\n // });\r\n // }\r\n\r\n // _deleteFile(filePath: string) {\r\n // console.log(filePath);\r\n // this._fileStorageService.deleteFile(filePath, this.channelInfo.channelId)\r\n // .subscribe(res => {\r\n // if (res.status === 200) {\r\n // // alert(JSON.stringify(res));\r\n // console.log(res);\r\n // this._sharedFileList();\r\n // } else {\r\n // console.error(JSON.stringify(res));\r\n // }\r\n // });\r\n // }\r\n\r\n\r\n\r\n// ❌ other un-used funcs ... \r\n\r\n //temp for Iframe \r\n // iframeHeight() {\r\n // let viewHeight = window.innerHeight;\r\n // //console.log(viewHeight);\r\n // //console.log(viewHeight - 120)\r\n // return `${viewHeight - 120}px`;\r\n // }\r\n\r\n // emitConnectionStatus(status) {\r\n // this.connectionStatus.emit(status);\r\n // }\r\n\r\n // _getIntakeSessionUserByIntakeUser() {\r\n // this._intakeService.getIntakeSessionUserByIntakeUser(this._officer.intakeUserId)\r\n // .subscribe(data => {\r\n // // alert(JSON.stringify(data));\r\n // if (data.status === 200) {\r\n // if (data.body.length > 0) {\r\n // var index;\r\n // let isActive = data.body.some((session, i) => {\r\n // index = i;\r\n // return session.active\r\n // });\r\n // if (isActive) {\r\n // this._officerSessionData = data.body[index];\r\n // this.startSession();\r\n // } else {\r\n // // this._officerSessionData = null;\r\n // }\r\n // } else {\r\n // // this._officerSessionData = null;\r\n // }\r\n // } else {\r\n // alert(data.status);\r\n // }\r\n // this.showPage = true;\r\n // });\r\n // }\r\n\r\n // dateCompare(dateCheck) {\r\n // let endTime = new Date(dateCheck);\r\n // endTime.setMinutes(endTime.getMinutes() - endTime.getTimezoneOffset());\r\n // let now = new Date();\r\n // now.setMinutes(now.getMinutes() - now.getTimezoneOffset());\r\n // // console.log(endTime.getTime());\r\n // // console.log(now.getTime());\r\n // if (endTime.getTime() > now.getTime()) {\r\n // //console.log(true);\r\n // return true;\r\n // } else {\r\n // //console.log(false);\r\n // return false;\r\n // }\r\n // }\r\n\r\n // _getChannelInfo() {\r\n // let channelName = \"PO_\" + this._officer.chatUserKeyNavigation.channelUserId;\r\n // this._apiCallsService.getChannelByNameAndProjectId(channelName, this.teamProjectId)\r\n // .subscribe(data => {\r\n // if(data.status === 200) {\r\n // let channels = data.body;\r\n // let selectedChannel = channels[0];\r\n // this.channelId = selectedChannel.channelId;\r\n // this.channelInfo = selectedChannel;\r\n // } else {\r\n // console.error(\"error getting channel info\", data)\r\n // }\r\n // });\r\n // }","\r\n
\r\n
\r\n

\r\n {{ _customizations.officerSelectMessage.value }}\r\n

\r\n
\r\n
\r\n

Start a New Session

\r\n
\r\n
Please enter a desired name
\r\n
\r\n
\r\n \r\n \r\n \r\n

\r\n Please only use letters in your name\r\n

\r\n
\r\n
\r\n
\r\n \r\n Begin Session\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n

Available Intake Officers

\r\n

Available Staff

\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {{\r\n officer.intakeUserKeyNavigation.chatUserKeyNavigation\r\n .displayName\r\n }}\r\n

\r\n

\r\n Shift Starts: {{ officer.startTime | date: \"h:mm aaa, E\" }}\r\n

\r\n

Shift Ends: {{ officer.endTime | date: \"h:mm aaa, E\" }}

\r\n
\r\n
\r\n

\r\n No Intake Officers Have Input Schedules.\r\n

\r\n

\r\n No Staff Have Input Schedules.\r\n

\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n

Instruction List

\r\n
\r\n
    \r\n \r\n {{ custom.value }}\r\n 0\r\n \"\r\n >\r\n \r\n \r\n {{ sub.value }}\r\n \r\n \r\n \r\n \r\n {{ sub.value }}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Welcome to the {{ _app.name }}.\r\n

\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n

Forms

\r\n \r\n Welcome to the {{ _app.name }}.\r\n

\r\n
\r\n

Avaliable Forms:

\r\n

No Forms Currently Available

\r\n \r\n \r\n {{ form.formName }}\r\n \r\n Avaliable Forms\r\n \r\n

\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n

Officers in Channel

\r\n

Users in Channel

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n

\r\n {{ officer.chatUserKeyNavigation.displayName }}\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{ officer.userStatus | statusDisplay}}
\r\n
\r\n
\r\n \r\n

\r\n No Schedule Available\r\n

\r\n

\r\n Shift Starts:\r\n {{ officer.startTime | date: \"h:mm aaa, E\" }}\r\n

\r\n

\r\n Shift Ends: {{ officer.endTime | date: \"h:mm aaa, E\" }}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n \r\n \r\n\t\r\n\r\n","import { Component, OnInit, Output, EventEmitter, OnDestroy, Inject } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ChannelService } from '../../services/channel-service';\r\nimport { AppIntakeService } from '../../../../src/app/services/app-intake.service';\r\nimport { ApiCallsService } from '../../../../src/app/services/api-calls.service';\r\nimport { FileStorageService } from 'src/app/services/file-storage.service';\r\nimport { SocketsService } from '../../services/sockets.service';\r\nimport { ProjectChannelService } from 'src/app/services/project-channel.service';\r\nimport { VdjjVideoIntakeHomepageComponent } from '../vdjj-video-intake-homepage/vdjj-video-intake-homepage.component';\r\n// import { DomSanitizer } from '@angular/platform-browser';\r\nimport { ToastNotificationService } from '../../services/toast-notification.service';\r\nimport { AuthService } from 'src/app/core/auth.service';\r\nimport { consoleLogStyle } from 'src/app/shared/varaibles';\r\nimport { ChannelFull } from 'src/app/shared/interface/channel-full';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'vdjj-video-intake-chat-io',\r\n templateUrl: './vdjj-video-intake-chat-io.component.html',\r\n styleUrls: ['./vdjj-video-intake-chat-io.component.scss']\r\n})\r\nexport class VdjjVideoIntakeChatIoComponent implements OnInit, OnDestroy {\r\n @Output() connectionStatus = new EventEmitter();\r\n\r\n public _intakeSession: any = {};\r\n public _officer: any = {}\r\n public _intakeOfficerShiftLogId: string = null;\r\n public _customizations: any = {};\r\n public _tenant: string = '';\r\n public _app: any;\r\n\r\n public officerList: any = [];\r\n public officerListFilter: any = [];\r\n public selectedOfficer: any = {};\r\n public officerReady: boolean = false;\r\n\r\n public showOverview: HTMLElement;\r\n public showChat: HTMLElement;\r\n public showVideo: HTMLElement;\r\n public showHistory: HTMLElement;\r\n // public showForms: HTMLElement;\r\n \r\n public showFormsBool: boolean = false;\r\n public selectedChannel: any = {};\r\n public channelId: string = null;\r\n public teamProjectId: string;\r\n public videoType: string;\r\n public isIntake: boolean;\r\n public groupChatSelected: boolean = false; //true if user is currently in group chat \r\n public inCall: boolean = false;\r\n\r\n // public alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']\r\n // public filterLetter: string = null;\r\n\r\n public newSchedule: any = {};\r\n public updateSchedule: any = {};\r\n public showSchedule: boolean = false; // true if editing schedule\r\n public scheduleReady: boolean = false; // true when schedule has loaded\r\n public scheduleError: boolean = false; // true when schedule is set to past Date\r\n public selectSchedule: any = {\r\n \"fromHour\": 12,\r\n \"fromMin\": 0,\r\n \"fromDay\": \"pm\",\r\n \"toHour\": 12,\r\n \"toMin\": 0,\r\n \"toDay\": \"pm\",\r\n \"fromDate\": \"\",\r\n \"toDate\": \"\"\r\n }\r\n public selectStatus: boolean = false;\r\n\r\n public chatList: any = [];\r\n public accessList: any = {\r\n \"owners\": [],\r\n \"members\": []\r\n };\r\n\r\n // for files\r\n public _showFiles: boolean = false\r\n public channelInfo: ChannelFull;\r\n public channelDisplayName: string = \"\";\r\n\r\n public socketServers: any = [];\r\n\r\n\r\n //for Jitsi\r\n public videoPreventList: any = ['users'];\r\n\r\n //for Medical\r\n public isMedical: boolean = this._intakeGlobal.isMedical;\r\n\r\n //for Iframe\r\n // public iframe: any = null;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n public isSessionEnding: boolean = false;\r\n\r\n constructor(\r\n private _authService: AuthService,\r\n private _channelService: ChannelService,\r\n private _intakeService: AppIntakeService,\r\n private _apiCallsService: ApiCallsService,\r\n private _fileStorageService: FileStorageService,\r\n private _chManageService: ProjectChannelService,\r\n private _intakeGlobal: VdjjVideoIntakeHomepageComponent,\r\n private _apiCalls: ApiCallsService,\r\n // private sanitizer: DomSanitizer,\r\n private _socketService: SocketsService,\r\n private _toastService: ToastNotificationService,\r\n ) {\r\n // new for files events ... \r\n this.subscriptions.push(this._channelService.onSharedFileUploadCompletedEvent$.subscribe((fileUploadObj: any) => {\r\n if (fileUploadObj !== null) {\r\n console.log(fileUploadObj.channelId.toLowerCase() === this.channelId.toLowerCase());\r\n if(fileUploadObj.channelId.toLowerCase() === this.channelId.toLowerCase()) {\r\n this._toastService.file(fileUploadObj.uploaderDisplayName + \" has uploaded \" + fileUploadObj.fileName);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUnreadMessageNotificationEvent$.subscribe((notiObj) => {\r\n console.log(\"unread# \" + notiObj.numUnreadMessages + \" allowSound \" + notiObj.hasAudioNotification + \" channelId: \" + notiObj.channelId, \" isIntakeGroupChat: \" + notiObj.isIntakeGroupChat);\r\n // notiObj.hasAudioNotification will be true when notiObj.numUnreadMessages equals 1. Joe, you can set off the audio notification when this is true.\r\n var nineUnreadMessages = 9;\r\n if(notiObj.isIntakeGroupChat) {\r\n // console.log(\"Group Chat unread counter: \" + notiObj.numUnreadMessages);\r\n if (!this.groupChatSelected) {\r\n if (notiObj.numUnreadMessages > nineUnreadMessages) {\r\n this._app.unreadMessages = \"9+\";\r\n } else {\r\n this._app.unreadMessages = notiObj.numUnreadMessages;\r\n }\r\n }\r\n } else {\r\n this.officerList.forEach((officer) => {\r\n if (officer.channelId === notiObj.channelId) {\r\n if (notiObj.numUnreadMessages > nineUnreadMessages) {\r\n officer.unreadMessages = \"9+\";\r\n } else {\r\n officer.unreadMessages = notiObj.numUnreadMessages;\r\n }\r\n }\r\n });\r\n this.filterOfficers();\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._toastService.onToastResolveEvent$.subscribe(data => {\r\n if (data.type === \"intakeDeleteFiles\") {\r\n this.showBox(1); // Moves user to overview to show 'session is ending' while we wait for session to end\r\n this.endSessionFileDelete();\r\n }\r\n }));\r\n\r\n // sets every arresting officer's status from the passed in list of users to online\r\n this.subscriptions.push(this._channelService.onUpdateUserStatusEvent$.subscribe((channelUserStatusList: any) => {\r\n // alert(JSON.stringify(channelUserStatusList))\r\n //console.log(\"channelUserStatusList\", channelUserStatusList)\r\n this.officerList.forEach((officer) => {\r\n channelUserStatusList.forEach((channelUser) => {\r\n if (officer.intakeUserKeyNavigation.chatUserId === channelUser.channelUserId) {\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n officer.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n officer.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n officer.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n // officer.userStatus = \"hidden\";\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n officer.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n officer.userStatus = \"brb\";\r\n }\r\n }\r\n });\r\n });\r\n\r\n // this._getChannelUsersInRoom();\r\n this.chatList.forEach((officer) => {\r\n channelUserStatusList.forEach((channelUser) => {\r\n if (officer.channelUserId === channelUser.channelUserId) {\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n officer.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n officer.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n officer.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n // officer.userStatus = \"hidden\";\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n officer.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n officer.userStatus = \"brb\";\r\n }\r\n }\r\n });\r\n });\r\n }));\r\n\r\n // only called on start session //\r\n this.subscriptions.push(this._channelService.onUpdateSessionUsersEvent$.subscribe(() => {\r\n console.log(\"onUpdateSessionUsersEvent sub\");\r\n //console.log(\"update session users event start session\")\r\n //alert(\"chat io update intake session users subscribe\");\r\n //check if intake officer was on AO's session that was just ended, if they were call this, if not, call init\r\n this._getAllIntakeSessionUsers()\r\n .then(()=>{\r\n // if (this.filterLetter === null) {\r\n // this.filterOfficers();\r\n // } else {\r\n // }\r\n // this.filterOfficersByLetter();\r\n this._getChannelUsersInRoom();\r\n })\r\n .catch(err => console.log(err));\r\n // called on begin && end\r\n // console.log(\"🟢 session begin | end\")\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onRtcCallInProgressEvent$.subscribe(() => {\r\n this.selectedOfficer.intakeStatus = 'in-call';\r\n this.selectedOfficer.userStatus = \"in-call\";\r\n }));\r\n\r\n // called on session END ONLY //\r\n this.subscriptions.push(this._channelService.onIntakeSessionEndedEvent$.subscribe((channelId: any) => {\r\n if (this.selectedOfficer.chatRoomId.toLowerCase() === channelId.toLowerCase()) {\r\n this.showBox(2);\r\n this.officerReady = false;\r\n this.isSessionEnding = false;\r\n console.log(\"🔴 session ended event emitted\");\r\n //this.officerList.splice(index, 1);\r\n this._officersNotAvailable();\r\n this._getAllIntakeSessionUsers()\r\n .then(()=>{\r\n // if (this.filterLetter === null) {\r\n // this.filterOfficers();\r\n // } else {\r\n // }\r\n // this.filterOfficersByLetter();\r\n this._getChannelUsersInRoom();\r\n })\r\n .catch(err=>console.log(err));\r\n this.selectedChannel = null;\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onLeaveRoomEvent$.subscribe(() => {\r\n if (this.officerList.length == 0) {\r\n this.showBox(2);\r\n this.officerReady = false;\r\n console.log(\"endSession: \" + this.selectedOfficer);\r\n //this.officerList.splice(index, 1);\r\n this._officersNotAvailable();\r\n // if (this.filterLetter === null) {\r\n // this.filterOfficers();\r\n // } else {\r\n // }\r\n // this.filterOfficersByLetter();\r\n this.selectedChannel = null;\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onJoinNotification$.subscribe((joinObj: any) => {\r\n //this._getAllIntakeSessionUsers();\r\n this._getChannelUsersInRoom();\r\n if (joinObj.showJoinNotification == true) {\r\n if (this.channelId.toLowerCase() === joinObj.channelId.toLowerCase()) {\r\n this._toastService.enter(joinObj.displayname);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onUserLeaveEvent$.subscribe((userObj: any) => {\r\n this._getChannelUsersInRoom();\r\n if (this.channelId.toLowerCase() === userObj.channelId.toLowerCase()) {\r\n this._toastService.leave(userObj.displayname);\r\n }\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onGetChannelUsersInRoomEvent$.subscribe(() => {\r\n this._getChannelUsersInRoom();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onHangUpUserEvent$.subscribe(() => {\r\n //alert(\"hangupuser subscribe\");\r\n // Todo: Joe, this is for displaying begin call ... ❔ do we need this ... \r\n //this.resetCall();\r\n }));\r\n\r\n this.subscriptions.push(this._channelService.onCallChannelEvent$.subscribe((callObj: any) => {\r\n this.inCall = true;\r\n }));\r\n\r\n document.addEventListener(\"visibilitychange\", this.onVisibilityChange);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.showOverview = document.getElementById('o-overview');\r\n this.showChat = document.getElementById('o-chat');\r\n this.showVideo = document.getElementById('video-stream');\r\n this.showHistory = document.getElementById('o-history');\r\n //this.showForms = document.getElementById('o-forms');\r\n this._intakeSession = this._intakeGlobal._intakeSession;\r\n this._officer = this._intakeGlobal.officerData;\r\n //console.log(\"officer: \", this._officer);\r\n this._app = this._intakeGlobal._app;\r\n this._app.unreadMessages = 0;\r\n this._tenant = this._intakeGlobal._tenant;\r\n this.teamProjectId = this._intakeGlobal._teamProjectId;\r\n if (!this.isMedical) {\r\n this.videoPreventList.push('record');\r\n }\r\n this._getChannelByNameInit(this._officer.chatUserId);\r\n //this._channelService.Initialize(this._officer.intakeUserId);\r\n //this._channelService.join(this.channelId);\r\n //this._channelService.populateMessages(this.channelId);\r\n //this._getChannelUsersInRoom();\r\n this._getAppCustomizations();\r\n this._getIntakeOfficerShiftLogByIntakeUser();\r\n //this._getAllIntakeSessionUsersInit();\r\n this.showBox(2);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n document.removeEventListener(\"visibilitychange\", this.onVisibilityChange);\r\n return this._channelService.leave(this.channelId);\r\n }\r\n\r\n public showBox(val: number) {\r\n this.showOverview.style.display = 'none';\r\n this.showChat.style.display = 'none';\r\n this.showVideo.style.display = 'none';\r\n this.showHistory.style.display = 'none';\r\n //this.showForms.style.display = 'none';\r\n this.showFormsBool = false;\r\n if (val === 5) {\r\n this.showHistory.style.display = 'block';\r\n } else if (val === 4) {\r\n //this.showForms.style.display = 'block';\r\n this.showFormsBool = true;\r\n //this.getOnlineForms();\r\n } else if (val === 3) {\r\n this.showVideo.style.display = 'block';\r\n } else if (val === 2) {\r\n this.showChat.style.display = 'block';\r\n this.selectedOfficer.unreadMessages = 0;\r\n } else {\r\n this.showOverview.style.display = 'grid';\r\n }\r\n }\r\n\r\n public beginCall() {\r\n this.selectedOfficer.intakeStatus = 'in-call';\r\n //this.selectedOfficer.userStatus = \"in-call\";\r\n // let div: any = document.getElementsByClassName('begin-videocall')[0]\r\n // div.style.display = 'none';\r\n this.inCall = true;\r\n this._channelService.onShowBeginCallPrompt(this.channelId);\r\n }\r\n\r\n public resetCall() {\r\n this.selectedOfficer.intakeStatus = \"ready\";\r\n // this.selectedOfficer.userStatus = \"online\";\r\n this.inCall = false;\r\n this.showVideoPrompt();\r\n }\r\n\r\n public showVideoPrompt(): boolean {\r\n if (this.selectedOfficer.intakeStatus !== 'in-call') {\r\n return true;\r\n } else {\r\n if (this.inCall) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n _getAllIntakeSessionUsersInit() {\r\n //Temp\r\n //this.officerList = officerList;\r\n //this.intakeSessionsAdditionalInfo(true);\r\n this._intakeService.getAllActiveIntakeSessionUsersBySession(this._intakeSession.intakeSessionId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.officerList = data.body;\r\n // this._getOnlineOfficers();\r\n this._getNotifications();\r\n } else {\r\n console.error(data)\r\n }\r\n });\r\n }\r\n\r\n _getAllIntakeSessionUsers(): Promise {\r\n return this._intakeService.getAllActiveIntakeSessionUsersBySession(this._intakeSession.intakeSessionId)\r\n .toPromise()\r\n .then(data => {\r\n console.log(\"all intake officers\", data);\r\n if (data.status === 200) {\r\n this.officerList = data.body;\r\n this._getNotifications();\r\n } else {\r\n this._toastService.error(\"Failed to get intake sessions.\")\r\n console.error(data);\r\n }\r\n })\r\n .catch(err => console.error(err));\r\n }\r\n\r\n intakeSessionsAdditionalInfo(init: boolean) {\r\n console.log(\"this.officerList\", this.officerList)\r\n this.officerListFilter = this.officerList;\r\n this.officerList.forEach(officer => {\r\n officer.intakeStatus = \"pending\";\r\n // officer.unreadMessages = \"10+\";\r\n officer.userStatus = \"\";\r\n officer.channelId = officer.chatRoomId;\r\n officer.overview = {\r\n report: false,\r\n refferal: false,\r\n schedule: false\r\n };\r\n });\r\n // console.log(\"Filter List!!!!!!!!!\",this.officerListFilter);\r\n this._getChannelUserInfo();\r\n if (init) {\r\n // console.log(\"intakeSessionAddionalInfo, should be after officer list loads \" + JSON.stringify(this.officerList));\r\n //this.selectFirstOfficer();\r\n }\r\n }\r\n\r\n _getNotifications() {\r\n this._chManageService.getChannelNotificationsByUser(this._officer.chatUserId)\r\n .subscribe( data => {\r\n if (data.status === 200) {\r\n let notifications = data.body;\r\n const nineUnreadMessages = 9;\r\n this.officerList.forEach((officer) => {\r\n let num = 0;\r\n notifications.forEach((notification) => {\r\n if (officer.chatRoomId === notification) {\r\n num++;\r\n }\r\n });\r\n if (num > nineUnreadMessages) {\r\n officer.unreadMessages = \"9+\";\r\n } else {\r\n officer.unreadMessages = num;\r\n }\r\n });\r\n this.intakeSessionsAdditionalInfo(true)\r\n } else {\r\n console.error(\"notifications error\", data) \r\n }\r\n });\r\n }\r\n\r\n _getAppCustomizations() {\r\n this._intakeService.getAppCustomizations(this._app.appId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let customs = data.body;\r\n customs.forEach(custom => {\r\n if (custom.section === \"CompanyImageIO\") {\r\n this._customizations.companyImageIO = custom;\r\n }\r\n });\r\n } else {\r\n console.error(\"error getting app customizations\", data)\r\n }\r\n });\r\n }\r\n\r\n _getChannelUserInfo() {\r\n this.officerList.forEach(officer => {\r\n this._authService.getChannelUserInfo()\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let channelUser: any = data.body;\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n officer.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n officer.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n officer.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n officer.userStatus = \"hidden\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n officer.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n officer.userStatus = \"brb\";\r\n }\r\n } else {\r\n console.error(\"error getting user info\", data)\r\n }\r\n });\r\n });\r\n }\r\n\r\n _getChannelByName(userId: any) {\r\n //console.log(\"getChannelByName\");\r\n let channelName = \"PO_\" + userId;\r\n this._apiCallsService.getChannelByNameAndProjectId(channelName, this.teamProjectId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let channels = data.body;\r\n this.selectedChannel = channels[0];\r\n this.channelId = this.selectedChannel.channelId;\r\n this.videoType = this.selectedChannel.videoType;\r\n if (this.videoType === null || this.videoType === 'kurento') {\r\n this.videoType = 'jitsi';\r\n }\r\n //console.log(\"getChannelByName: \" + this.channelId);\r\n this._channelService.onSelectPoliceOfficer(this.channelId);\r\n this._connectToChannel();\r\n this._getChannelOwners();\r\n this._getChannelMembers();\r\n // this._channelOwnerCheck();\r\n this.channelInfo = channels[0]; \r\n //temp Iframe\r\n // this.iframe = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n // \"../../../assets/jitsi/meeting.html?username=\" +\r\n // this._officer.chatUserKeyNavigation.displayName + \"&channelname=\" + this.channelId\r\n // );\r\n } else {\r\n console.error(\"error getting channel\", data)\r\n }\r\n });\r\n }\r\n\r\n public _getActiveSocketServers(): Promise {\r\n return this._socketService.getActiveSocketServers()\r\n .toPromise()\r\n .then(data => {\r\n //console.log(\"Getactivesocketservers \" + JSON.stringify(data.body));\r\n this.socketServers = data.body;\r\n //this.Initialize(channelId);\r\n })\r\n .catch(err => console.error(err));\r\n }\r\n\r\n _getChannelByNameInit(userId: any) {\r\n //console.log(\"getChannelByName\");\r\n let channelName = \"PO_\" + userId;\r\n this._apiCallsService.getChannelByNameAndProjectId(channelName, this.teamProjectId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let channels = data.body;\r\n this.channelId = channels[0].channelId;\r\n this.videoType = channels[0].videoType;\r\n if (this.videoType === null || this.videoType === 'kurento') {\r\n this.videoType = 'jitsi';\r\n }\r\n //console.log(\"getChannelByName: \" + channelName);\r\n this._channelService.join(this.channelId);\r\n this._getAllIntakeSessionUsersInit();\r\n } else {\r\n console.error(\"error getting channel\", data)\r\n }\r\n });\r\n }\r\n\r\n checkGroupChat() {\r\n if (!this.groupChatSelected) {\r\n if (this.channelId !== null) {\r\n this._channelService.hangUpCallEvent();\r\n console.log(\"leaving channel: \" + this.channelId);\r\n this._channelService.sendCommand(\"/leave\", this.channelId);\r\n }\r\n this.groupChatSelected = true;\r\n this._app.unreadMessages = 0;\r\n this._getGroupChatChannel();\r\n }\r\n }\r\n\r\n _getGroupChatChannel() {\r\n console.log(this.selectedOfficer.displayName);\r\n if (this.selectedOfficer.displayName !== \"Intake Group Chat\" || this.selectedOfficer.displayName !== \"Staff Group Chat\") {\r\n this.selectedOfficer = {\r\n \"userStatus\": \"none\",\r\n \"intakeStatus\": \"\",\r\n \"displayName\": \"Intake Group Chat\",\r\n \"intakeUserKeyNavigation\": {\r\n \"chatUserId\": null,\r\n \"chatUserKeyNavigation\": {\r\n \"username\": \"None\",\r\n \"displayName\": \"None\",\r\n \"hash\": \"1\"\r\n }\r\n }\r\n };\r\n if (this.isMedical) {\r\n this.selectedOfficer.displayName = \"Staff Group Chat\"\r\n }\r\n this.chatList = [];\r\n this._intakeService.getIntakeGroupChatChannel(this.teamProjectId, this.isMedical)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n let channels = data.body;\r\n this.channelId = channels[0].channelId;\r\n this.videoType = channels[0].videoType;\r\n if (this.videoType === null || this.videoType === 'kurento') {\r\n this.videoType = 'jitsi';\r\n }\r\n this.selectedOfficer.channelId = channels[0].channelId;\r\n this.selectedChannel = channels[0];\r\n //this._channelService.Initialize(this.channelId);\r\n //temp Iframe \r\n // this.iframe = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n // \"../../../assets/jitsi/meeting.html?username=\" +\r\n // this._officer.chatUserKeyNavigation.displayName + \"&channelname=\" + this.channelId\r\n // );\r\n \r\n this._channelService.join(this.channelId);\r\n this._channelService.populateMessages(this.channelId);\r\n // TODO: Change the name to a more broad Intake App action\r\n // ie: onSelectNewIntakeChannel\r\n this._channelService.onSelectPoliceOfficer(this.channelId);\r\n this.channelInfo = channels[0] //temp for files\r\n this.officerReady = true;\r\n if (this.showOverview.style.display === 'grid') {\r\n this.showOverview.style.display = 'none';\r\n this.showChat.style.display = 'block';\r\n } else if (this.showFormsBool) {\r\n this.showFormsBool = false;\r\n this.showChat.style.display = 'block';\r\n }\r\n } else {\r\n console.error(\"error getting group chat\", data)\r\n }\r\n });\r\n }\r\n }\r\n\r\n _selectOfficer(i: number) {\r\n this.groupChatSelected = false;\r\n if (this.selectedChannel) {\r\n if (this.selectedChannel.name !== this.officerListFilter[i].chatRoomKeyNavigation.name) {\r\n this._channelService.hangUpCallEvent();\r\n this._channelService.sendCommand(\"/leave\", this.channelId);\r\n this._getOfficer(i);\r\n }\r\n } else {\r\n this._getOfficer(i);\r\n }\r\n this.officerReady = true;\r\n if (this.showChat.style.display === 'block') {\r\n this.selectedOfficer.unreadMessages = 0;\r\n }\r\n }\r\n\r\n _getOfficer(i: number) {\r\n this.selectedOfficer = this.officerListFilter[i];\r\n this._getChannelByName(this.selectedOfficer.intakeUserKeyNavigation.chatUserId);\r\n }\r\n\r\n _officersNotAvailable() {\r\n this.selectedOfficer = {\r\n \"intakeUserId\": null,\r\n \"firstName\": \"None\",\r\n \"lastName\": \"None\",\r\n \"displayName\": \"None\",\r\n \"chatRoomId\": undefined,\r\n \"userStatus\": \"away\",\r\n \"intakeStatus\": \"pending\",\r\n \"unreadMessages\": 0,\r\n \"overview\": {\r\n \"report\": false,\r\n \"refferal\": false,\r\n \"schedule\": false\r\n },\r\n \"intakeUserKeyNavigation\": {\r\n \"chatUserId\": null,\r\n \"chatUserKeyNavigation\": {\r\n \"username\": \"None\",\r\n \"displayName\": \"None\",\r\n \"hash\": \"1\"\r\n }\r\n }\r\n };\r\n // this.channelId = this.selectedOfficer.channelId; //Will be used to prevent no channels\r\n }\r\n\r\n _connectToChannel() {\r\n if (this.selectedChannel) {\r\n this._channelService.join(this.channelId);\r\n this._channelService.populateMessages(this.channelId);\r\n } else {\r\n this.officerReady = false;\r\n this._toastService.error(\"Could not connect to channel.\");\r\n }\r\n }\r\n\r\n _getChannelUsersInRoom() {\r\n this._chManageService.getChannelUsersInRoomByChannelId(this.channelId)\r\n .subscribe(data => {\r\n if(data.status === 200) {\r\n this.chatList = [];\r\n let chatList = data.body;\r\n let _officerId = this._officer.chatUserKeyNavigation.channelUserId\r\n chatList.sort(function (x, y) { return x.channelUserId == _officerId ? -1 : y.channelUserId == _officerId ? 1 : 0; });\r\n this.chatList = chatList;\r\n this.chatList.forEach(officer => {\r\n let channelUser = officer.chatUserKeyNavigation;\r\n if (channelUser.selectedStatus === 0) {\r\n if (channelUser.presenceStatus === 0) {\r\n officer.userStatus = \"offline\";\r\n } else if (channelUser.presenceStatus === 1) {\r\n officer.userStatus = \"away\";\r\n } else if (channelUser.presenceStatus === 2) {\r\n officer.userStatus = \"active\";\r\n } else if (channelUser.presenceStatus === 3) {\r\n //Temp for incall\r\n officer.userStatus = \"active\";\r\n }\r\n } else if (channelUser.selectedStatus === 1) {\r\n officer.userStatus = \"hidden\";\r\n } else if (channelUser.selectedStatus === 2) {\r\n officer.userStatus = \"dnd\";\r\n } else if (channelUser.selectedStatus === 3) {\r\n officer.userStatus = \"brb\";\r\n }\r\n });\r\n } else {\r\n console.error(\"error getting channel users in room\", data)\r\n }\r\n });\r\n }\r\n\r\n _getChannelOwners() {\r\n this._chManageService.getChannelOwnersByChannelId(this.channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.accessList.owners = data.body;\r\n this.accessList.ownersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n if (this.accessList.ownersPag.nextPageLink) {\r\n this._getMoreChannelOwners(this.accessList.ownersPag.nextPageLink);\r\n }\r\n } else {\r\n this.accessList.owners = [];\r\n }\r\n });\r\n }\r\n\r\n _getMoreChannelOwners(link: any) {\r\n this._apiCalls.getGenericForPagination(link)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n //console.log(\"owners\")\r\n //console.log(this.accessList.owners)\r\n //console.log(\"body from pag\")\r\n //console.log(data.body)\r\n let owners: any = data.body;\r\n owners.forEach(owner => {\r\n //console.log(\"new owner\")\r\n //console.log(owner);\r\n this.accessList.owners.push(owner);\r\n });\r\n //console.log(\"owners after pag\")\r\n //console.log(this.accessList.owners)\r\n // this.accessList.owners.concat(owners);\r\n this.accessList.ownersPag = JSON.parse(data.headers.get('X-Pagination'));\r\n if (this.accessList.ownersPag.nextPageLink) {\r\n this._getMoreChannelOwners(this.accessList.ownersPag.nextPageLink);\r\n }\r\n } else {\r\n console.error(\"error getting channel owners\", data)\r\n }\r\n });\r\n }\r\n\r\n _getChannelMembers() {\r\n // this.accessList.members = [];\r\n this._chManageService.getChannelMembersByChannelId(this.channelId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this.accessList.members = data.body;\r\n } else {\r\n this.accessList.owners = []; // ? ... is'nt this members ... \r\n }\r\n });\r\n }\r\n\r\n filterOfficers() {\r\n console.log(\"%c filterofficers \", consoleLogStyle);\r\n // this.filterLetter = null;\r\n console.log(\"officerlistfilter before\", this.officerListFilter)\r\n this.officerListFilter = [];\r\n let filterBar: HTMLInputElement = document.getElementById('io-filter');\r\n if (filterBar.value !== '') {\r\n let filter = filterBar.value.toUpperCase().replace(/\\s/g, '');\r\n if (this.officerList) {\r\n for (let i = 0; i < this.officerList.length; i++) {\r\n let name = this.officerList[i].displayName;\r\n if (name.toUpperCase().indexOf(filter) > -1) {\r\n this.officerListFilter.push(this.officerList[i]);\r\n }\r\n }\r\n console.log(\"officerlist\", this.officerList);\r\n }\r\n } else { \r\n this.officerListFilter = this.officerList;\r\n console.log(\"no val in input\", this.officerListFilter)\r\n }\r\n }\r\n\r\n // setFilterLetter(letter: string) {\r\n // this.filterLetter = letter;\r\n // this.filterOfficersByLetter();\r\n // }\r\n\r\n // filterOfficersByLetter() {\r\n // console.log(\"%c filterofficers by letter - \", consoleLogStyle, this.filterLetter);\r\n // this.officerListFilter = [];\r\n // if (this.officerList) {\r\n // for (let i = 0; i < this.officerList.length; i++) {\r\n // let fLetter = this.officerList[i].displayName[0]\r\n // if (fLetter.toUpperCase() === this.filterLetter.toUpperCase()) {\r\n // this.officerListFilter.push(this.officerList[i]);\r\n // }\r\n // }\r\n // }\r\n // }\r\n\r\n clearFilter() {\r\n this.officerListFilter = this.officerList;\r\n let filterBar: any = document.getElementById('io-filter');\r\n filterBar.value = \"\";\r\n // this.filterLetter = null;\r\n }\r\n\r\n overviewCheck() {\r\n if (this.selectedOfficer.intakeStatus !== \"in-call\") {\r\n if (this.selectedOfficer.overview.report == true &&\r\n this.selectedOfficer.overview.refferal == true &&\r\n this.selectedOfficer.overview.schedule == true) {\r\n this.selectedOfficer.intakeStatus = \"ready\";\r\n } else {\r\n this.selectedOfficer.intakeStatus = \"pending\";\r\n }\r\n }\r\n }\r\n\r\n _getIntakeOfficerShiftLogByIntakeUser() {\r\n this._intakeService.getIntakeOfficerShiftLogByIntakeUser(this._officer.intakeUserId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n if (data.body.length > 0) {\r\n let updateSchedule = data.body[0];\r\n this.updateSchedule = {\r\n \"intakeOfficerShiftLogId\": \"\",\r\n \"startTime\": updateSchedule.startTime,\r\n \"endTime\": updateSchedule.endTime\r\n }\r\n let endTime = new Date(this.updateSchedule.endTime);\r\n endTime.setMinutes(endTime.getMinutes() - endTime.getTimezoneOffset());\r\n if (this.dateCompare(endTime)) {\r\n this.updateSchedule.intakeOfficerShiftLogId = updateSchedule.intakeOfficerShiftLogId;\r\n this._intakeOfficerShiftLogId = this.updateSchedule.intakeOfficerShiftLogId;\r\n } else {\r\n this._intakeOfficerShiftLogId = null;\r\n }\r\n this.scheduleConverter();\r\n } else {\r\n this.scheduleReady = true;\r\n }\r\n } else {\r\n console.log(data.status);\r\n this._toastService.error(\"Could not retrieve shift log.\")\r\n }\r\n });\r\n }\r\n\r\n _postIntakeOfficerShiftLog() {\r\n this.newSchedule.intakeUserId = this._officer.intakeUserId;\r\n this.newSchedule.intakeSessionId = this._intakeSession.intakeSessionId;\r\n this._intakeService.postIntakeOfficerShiftLog(this.newSchedule)\r\n .subscribe(res => {\r\n if (res.status === 201) {\r\n // console.log(res);\r\n this._getIntakeOfficerShiftLogByIntakeUser();\r\n } else {\r\n this._toastService.error(\"Schedule could not be created\")\r\n console.error(res)\r\n }\r\n });\r\n }\r\n\r\n _putIntakeOfficerShiftLog() {\r\n this.updateSchedule.intakeUserId = this._officer.intakeUserId;\r\n this.updateSchedule.intakeSessionId = this._intakeSession.intakeSessionId;\r\n this._intakeService.putIntakeOfficerShiftLog(this._intakeOfficerShiftLogId, this.updateSchedule)\r\n .subscribe(res => {\r\n if (res.status === 204) {\r\n this._getIntakeOfficerShiftLogByIntakeUser();\r\n // console.log(res);\r\n } else {\r\n this._toastService.error(\"Schedule could not be changed\")\r\n console.error(res)\r\n }\r\n });\r\n }\r\n\r\n scheduleManager() {\r\n let schedule = this.selectSchedule;\r\n let newHours: any = {};\r\n newHours.fromHour = parseInt(schedule.fromHour, 10);\r\n newHours.toHour = parseInt(schedule.toHour, 10);\r\n let newStartTime: Date = new Date();\r\n if (schedule.fromDay === \"pm\") {\r\n if (schedule.fromHour !== 12) {\r\n newHours.fromHour += 12;\r\n }\r\n } else if (schedule.fromHour === 12) {\r\n newHours.fromHour = 0;\r\n }\r\n newStartTime.setHours(newHours.fromHour, schedule.fromMin, 0); // Auto converts to UTC when set to object\r\n let newEndTime: Date = new Date();\r\n if (schedule.toDay === \"pm\") {\r\n if (schedule.toHour !== 12) {\r\n newHours.toHour += 12;\r\n }\r\n } else if (schedule.toHour === 12) {\r\n newHours.toHour = 24;\r\n }\r\n newEndTime.setHours(newHours.toHour, schedule.toMin, 0); // Auto converts to UTC when set to object\r\n console.log(\"End Date: \" + newEndTime);\r\n if (newStartTime.getTime() >= newEndTime.getTime()) {\r\n newEndTime.setDate(newEndTime.getDate() + 1)\r\n }\r\n if (this.dateCompare(newEndTime)) {\r\n this.scheduleError = false;\r\n if (this._intakeOfficerShiftLogId) {\r\n this.updateSchedule.startTime = newStartTime;\r\n this.updateSchedule.endTime = newEndTime;\r\n this._putIntakeOfficerShiftLog();\r\n } else {\r\n this.newSchedule.startTime = newStartTime;\r\n this.newSchedule.endTime = newEndTime;\r\n this._postIntakeOfficerShiftLog();\r\n }\r\n this._channelService.UpdateSchedule(this._app.appId, this.channelId);\r\n } else {\r\n this.scheduleError = true;\r\n }\r\n }\r\n\r\n scheduleConverter() {\r\n let startTime = new Date(this.updateSchedule.startTime);\r\n let endTime = new Date(this.updateSchedule.endTime);\r\n // console.log(startTime);\r\n // console.log(endTime);\r\n startTime.setMinutes(startTime.getMinutes() - startTime.getTimezoneOffset()); //Converts back to Local\r\n endTime.setMinutes(endTime.getMinutes() - endTime.getTimezoneOffset()); //Converts back to Local\r\n this.selectSchedule.fromDate = startTime;\r\n this.selectSchedule.toDate = endTime;\r\n this.selectSchedule.fromHour = startTime.getMinutes()\r\n if (startTime.getHours() < 13) {\r\n if (startTime.getHours() === 0) {\r\n this.selectSchedule.fromHour = 12\r\n this.selectSchedule.fromDay = 'am'\r\n } else {\r\n this.selectSchedule.fromHour = startTime.getHours()\r\n if (startTime.getHours() === 12) {\r\n this.selectSchedule.fromDay = 'pm'\r\n } else {\r\n this.selectSchedule.fromDay = 'am'\r\n }\r\n }\r\n } else {\r\n this.selectSchedule.fromHour = startTime.getHours() - 12\r\n this.selectSchedule.fromDay = 'pm'\r\n }\r\n this.selectSchedule.toHour = endTime.getMinutes()\r\n if (endTime.getHours() < 13) {\r\n if (endTime.getHours() === 0) {\r\n this.selectSchedule.toHour = 12\r\n this.selectSchedule.toDay = 'am'\r\n } else {\r\n this.selectSchedule.toHour = endTime.getHours()\r\n if (endTime.getHours() === 12) {\r\n this.selectSchedule.toDay = 'pm'\r\n } else {\r\n this.selectSchedule.toDay = 'am'\r\n }\r\n }\r\n } else {\r\n this.selectSchedule.toHour = endTime.getHours() - 12\r\n this.selectSchedule.toDay = 'pm'\r\n }\r\n this.scheduleReady = true;\r\n if (this._intakeOfficerShiftLogId) {\r\n this.showSchedule = true;\r\n }\r\n }\r\n\r\n dateCompare(dateCheck) {\r\n let now = new Date();\r\n if (dateCheck.getTime() > now.getTime()) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n changeSchedule() {\r\n if (this.showSchedule) {\r\n this.showSchedule = false;\r\n } else {\r\n this.scheduleManager();\r\n }\r\n }\r\n\r\n onVisibilityChange() {\r\n if (this.channelId) {\r\n if (document.hidden) {\r\n //console.log(\"Hidden \" + this.channelId);\r\n this._channelService.sendCommand(\"/leave\", this.channelId);\r\n }\r\n else {\r\n //console.log(\"SHOWN \" + this.channelId);\r\n this._channelService.join(this.channelId);\r\n }\r\n }\r\n }\r\n\r\n // files modal // \r\n showFilesModal() {\r\n this._showFiles = (this._showFiles) ? false : true;\r\n }\r\n\r\n propmtDeleteFiles() {\r\n // toast shoulding show while in the intake group chat\r\n if(this.selectedOfficer.displayName !== 'Intake Group Chat')\r\n this._toastService.continue(\"Would you like to end this session, and DELETE ALL chat history and shared files?\", \"intakeDeleteFiles\");\r\n else\r\n console.log(\"Tried to end session in the group chat\");\r\n }\r\n // end session new w/ file delete confirm // \r\n endSessionFileDelete() {\r\n this.isSessionEnding = true;\r\n // end && delete files \r\n // 🚧 ... \r\n this._deleteFiles();\r\n this._channelService.hangUpCallEvent();\r\n this._deleteIntakeSessionUser(this.selectedOfficer.intakeSessionUserId, this._app.appId, this.selectedOfficer.chatRoomId);\r\n }\r\n\r\n _deleteFiles() {\r\n this._fileStorageService.deleteTempIntakeFiles(this.channelInfo.channelId)\r\n .subscribe(res => {\r\n if (res.status === 200) {\r\n console.log(res);\r\n } else {\r\n this._toastService.error(\"There was an error deleting intake files.\");\r\n console.error(\"error deleting file\", res)\r\n }\r\n });\r\n }\r\n\r\n _deleteIntakeSessionUser(intakeSessionUserId: any, appId: any, channelId: any) {\r\n //console.log(\"session ended call to service >\")\r\n this._channelService.deleteIntakeSessionUser(intakeSessionUserId, appId, channelId);\r\n }\r\n // ^ end session ^ //\r\n\r\n // to close all modals | add switch if needed to close milti ... \r\n clickOffModalEvent(event: Event) {\r\n let target = event.target as HTMLElement || event.currentTarget as HTMLElement || event.srcElement as HTMLElement;\r\n // console.log(\"%c e.t, e.srcel, e.curtar \", consoleLogStyle, event.target, event.srcElement, event.currentTarget)\r\n let value = null;\r\n if (target.id) {\r\n let idAttr = target.id;\r\n value = idAttr;\r\n // console.log(\"%c tar.id? ,val? \", consoleLogStyle, idAttr, value)\r\n }\r\n switch (value) {\r\n case 'intake-files-modal': {\r\n this.showFilesModal();\r\n break;\r\n }\r\n default: return;\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n// ❌ old file popup funcs ... \r\n\r\n // // upload event emitter .html line 455 //\r\n // uploadChange(isUploading:boolean) {\r\n // this.fileIsUploading = isUploading;\r\n // }\r\n\r\n // temp files\r\n // filesInit() {\r\n // this.downloadFile = {\r\n // \"roomOwnerUserId\": \"\",\r\n // \"channelId\": \"\",\r\n // \"path\": \"\",\r\n // \"rev\": \"\"\r\n // }\r\n // }\r\n\r\n // _downloadSharedFile(filePath: string) {\r\n // this.downloadFile.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n // this.downloadFile.path = filePath;\r\n // this.downloadFile.channelId = this.channelInfo.channelId;\r\n // this._fileStorageService.fileStorageDownloadSharedFile(this.downloadFile)\r\n // .subscribe(data => {\r\n // if (data.status === 200) {\r\n // console.log(data);\r\n // // window.open(data.body, '_blank') //open\r\n // this.createDownloadElement(data.body);\r\n // this.filesInit();\r\n // } else {\r\n // this._toastService.error(\"File failed to download\");\r\n // // alert(JSON.stringify(data));\r\n // }\r\n // });\r\n // }\r\n\r\n // createDownloadElement(link: any) {\r\n // // alert(link);\r\n // var element = document.createElement('a');\r\n // element.setAttribute('href', link);\r\n // element.setAttribute('download', link);\r\n // element.setAttribute('target', '_blank');\r\n // element.style.display = 'none';\r\n // document.body.appendChild(element);\r\n // element.click();\r\n // document.body.removeChild(element);\r\n // }\r\n\r\n // _sharedFileList() {\r\n // this.sharedFileListQuery.roomOwnerUserId = this.channelInfo.chatUserKeyNavigation.channelUserId;\r\n // this.sharedFileListQuery.projectName = this.channelInfo.teamProjectKeyNavigation.name;\r\n // this.sharedFileListQuery.roomName = this.channelInfo.name;\r\n // this._fileStorageService.listSharedFiles(this.sharedFileListQuery)\r\n // .subscribe(data => {\r\n // if (data.status === 200) {\r\n // this.fileList = data.body.entries;\r\n // } else {\r\n // this._toastService.error(\"Files failed to load.\");\r\n // console.error(data);\r\n // }\r\n // });\r\n // }\r\n\r\n // _softDeleteFile(filePath: string) {\r\n // this._fileStorageService.softDeleteFile(filePath, this.channelInfo.channelId)\r\n // .subscribe(res => {\r\n // // alert(JSON.stringify(res));\r\n // this._sharedFileList();\r\n // });\r\n // }\r\n\r\n\r\n// ❌ other un-used funcs ... \r\n\r\n // emitConnectionStatus(status) {\r\n // this.connectionStatus.emit(status);\r\n // }\r\n\r\n //selectFirstOfficer() {\r\n // if (this.officerList && this.officerList.length > 0) {\r\n // //alert(\"select first officer \");\r\n // // this.selectedOfficer = this.officerList[0];\r\n // this.officerListFilter = this.officerList;\r\n // this._getOfficer(0);\r\n // // this.officerReady = true;\r\n // } else {\r\n // this._officersNotAvailable();\r\n // }\r\n //}","
\r\n
\r\n
Schedule
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n

\r\n \r\n {{ selectSchedule.fromDate | date: \"E, MMM d\" }}\r\n \r\n \r\n ({{ selectSchedule.fromHour }} :\r\n {{ selectSchedule.fromMin }} {{ selectSchedule.fromDay }})\r\n \r\n \r\n ({{ selectSchedule.fromHour }} {{ selectSchedule.fromDay }})\r\n \r\n - \r\n

\r\n

\r\n \r\n {{ selectSchedule.toDate | date: \"E, MMM d\" }}\r\n \r\n \r\n ({{ selectSchedule.toHour }} : {{ selectSchedule.toMin }}\r\n {{ selectSchedule.toDay }})\r\n \r\n \r\n ({{ selectSchedule.toHour }} {{ selectSchedule.toDay }})\r\n \r\n

\r\n \r\n
\r\n
\r\n

\r\n No Schedule Set Today\r\n

\r\n

Schedule cannot be Past

\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Officer Name\r\n \r\n \r\n Resident Name\r\n \r\n \r\n \r\n \r\n
Unread Messages
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
{{ officer.displayName }}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Intake Group Chat\r\n \r\n Staff Group Chat\r\n \r\n \r\n \r\n \r\n
\r\n

\r\n There are currently no officers online.\r\n

\r\n

\r\n There are currently no residents online.\r\n

\r\n 0\"\r\n >\r\n There are no users to select from,\r\n Clear Filters.\r\n

\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n

\r\n {{ selectedOfficer.displayName }}\r\n {{\r\n selectedOfficer.intakeUserKeyNavigation.chatUserKeyNavigation\r\n .username\r\n }}\r\n

\r\n

\r\n \r\n

\r\n
\r\n Overview\r\n Messages\r\n Video Call\r\n
\r\n
\r\n
\r\n

Forms

\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Overview

\r\n
\r\n

Room Users

\r\n
\r\n
Police Officers
\r\n
Residents
\r\n \r\n
\r\n \r\n
\r\n

\r\n {{ officer.chatUserKeyNavigation.displayName }}\r\n

\r\n
\r\n
\r\n
\r\n
Intake Officers
\r\n
Staff
\r\n \r\n
\r\n \r\n
\r\n

\r\n {{ officer.chatUserKeyNavigation.displayName }}\r\n

\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n End Session\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n

\r\n Officers in Channel\r\n

\r\n

Staff in Channel

\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n

\r\n {{ officer.chatUserKeyNavigation.displayName }}\r\n

\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n

0 && !isMedical\">\r\n Please select an officer\r\n

\r\n

0 && isMedical\">\r\n Please select a resident\r\n

\r\n

\r\n There are currently no officers to select from\r\n

\r\n

\r\n There are currently no residents to select from\r\n

\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

Call History

\r\n

Call History coming soon.

\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n \r\n \r\n\t\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ChannelService } from '../../services/channel-service';\r\nimport { AuthService } from '../../core/auth.service';\r\nimport { AppIntakeService } from '../../../../src/app/services/app-intake.service';\r\nimport { ApiCallsService } from 'src/app/services/api-calls.service';\r\nimport { SocketsService } from '../../services/sockets.service';\r\nimport { Router, ActivatedRoute, Params } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { ChannelUser } from 'src/app/shared/interface/channel-user';\r\nimport { consoleLogStyle } from '../../shared/varaibles';\r\nimport { ToastNotificationService } from 'src/app/services/toast-notification.service';\r\nimport { GuestService } from 'src/app/services/guest.service';\r\n\r\n@Component({\r\n selector: 'vdjj-video-intake-homepage',\r\n templateUrl: './vdjj-video-intake-homepage.component.html',\r\n styleUrls: ['./vdjj-video-intake-homepage.component.scss']\r\n})\r\nexport class VdjjVideoIntakeHomepageComponent implements OnInit, OnDestroy {\r\n\r\n public _app: any = {};\r\n public _intakeSession: any = {};\r\n public _tenant: string;\r\n public _teamProjectId: string;\r\n\r\n public userInfo: ChannelUser = this._authService._channelUserInfo;\r\n public _isIntake: boolean = false;\r\n public _officerChannelId: string = \"\";\r\n public _customizations: any = {};\r\n public showPage: boolean = false;\r\n public officerData: any = {};\r\n\r\n public channelInfo: any = {};\r\n public connectionStatus: any = \"connected\";\r\n public socketServers: any = [];\r\n\r\n public _isSignedIn = false;\r\n\r\n //For Medical\r\n public isMedical: boolean = false;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private _channelService: ChannelService,\r\n private _authService: AuthService,\r\n private _apiCallsService: ApiCallsService,\r\n private _intakeService: AppIntakeService,\r\n private _socketService: SocketsService,\r\n private _route: ActivatedRoute,\r\n private router: Router,\r\n private _toast: ToastNotificationService,\r\n private _guestService: GuestService,\r\n ) {\r\n if (this._channelService) {\r\n this.subscriptions.push(this._channelService.onHubConnectionStateChangeEvent$.subscribe((state: any) => {\r\n // alert(state);\r\n console.log(\"%c hub connection state change event: \", consoleLogStyle, state);\r\n this.connectionStatus = state;\r\n }))\r\n } else {\r\n alert(\"Channel service not initialized\");\r\n }\r\n\r\n this.subscriptions.push(\r\n this._authService.channelUserInfoChanged$.subscribe(() => {\r\n this.userInfo = this._authService._channelUserInfo;\r\n if (this.userInfo.isGuest) {\r\n this._guestService.routeToChannelInvited();\r\n }\r\n this.tenantCheck();\r\n }));\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this._route.params.subscribe((params: Params) => {\r\n // console.log(params);\r\n if (params['tenant']) {\r\n this._tenant = params['tenant'];\r\n if (params['type']) {\r\n if (params['type'] === 'medical') {\r\n this.isMedical = true;\r\n }\r\n }\r\n if (this.userInfo) {\r\n if (this.userInfo.isGuest) {\r\n this._guestService.routeToChannelInvited();\r\n }\r\n this.tenantCheck();\r\n }\r\n } else {\r\n this.router.navigate(['/unauthorized']);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n return this._channelService.leave(this._officerChannelId);\r\n }\r\n\r\n tenantCheck() {\r\n if (this._tenant.toUpperCase() === this.userInfo.tenant.toUpperCase()) {\r\n this._getIntakeAppInfo();\r\n } else {\r\n this.router.navigate(['/unauthorized']);\r\n }\r\n }\r\n\r\n public _getActiveSocketServers(): Promise {\r\n return this._socketService.getActiveSocketServers()\r\n .toPromise()\r\n .then(data => {\r\n //console.log(\"Getactivesocketservers intake app homepage\" + JSON.stringify(data.body));\r\n this.socketServers = data.body;\r\n })\r\n .catch(err => console.log(err));\r\n }\r\n\r\n _getIntakeAppInfo() {\r\n console.log(\"getting intake app info w/ tenant & ismedical\", this._tenant, this.isMedical)\r\n this._intakeService.getIntakeApp(this._tenant, this.isMedical)\r\n .subscribe(data => {\r\n console.info(\"getting intake app info data sub\", data, data.status, data.body)\r\n if (data.status === 200) {\r\n if (data.body.length > 0) {\r\n this._app = data.body[0];\r\n console.info(\"getting intake app info data this._app?\", this._app)\r\n this._getAppCustomizations();\r\n this._getIntakeSession();\r\n } else {\r\n this.router.navigate(['/unauthorized']);\r\n }\r\n } else {\r\n console.error(\"error getting intake app info \", data.status, data.body)\r\n }\r\n });\r\n }\r\n\r\n _getAppCustomizations() {\r\n this._intakeService.getAppCustomizations(this._app.appId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let customs = data.body;\r\n customs.forEach(custom => {\r\n if (custom.section === \"CompanyImageHome\") {\r\n this._customizations.companyImageHome = custom;\r\n }\r\n });\r\n } else {\r\n console.log(\"error gettting app customizations\", data)\r\n }\r\n });\r\n }\r\n\r\n _getIntakeSession() {\r\n this._intakeService.getIntakeSessionByAppId(this._app.appId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n this._intakeSession = data.body[0];\r\n this._getIntakeUser();\r\n } else {\r\n console.error(\"error getting intake session\", data)\r\n }\r\n });\r\n }\r\n\r\n _getIntakeUser() {\r\n this._intakeService.getIntakeUserByChannelUserId(this._app.appId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n if (data.body.length > 0) {\r\n let intakeData = data.body[0];\r\n this._isIntake = intakeData.isIntakeOfficer;\r\n this.officerData = intakeData;\r\n //console.log(this.officerData)\r\n this._getProjectByName();\r\n } else {\r\n console.error(\"error getting intake user\", data)\r\n this._toast.error(\"You do not have access to this page.\");\r\n }\r\n } else {\r\n console.error(\"error getting intake user\", data)\r\n this._toast.error(\"You do not have access to this page.\");\r\n }\r\n });\r\n }\r\n\r\n _getProjectByName() {\r\n let projectName: string;\r\n if (this.isMedical) {\r\n projectName = this._tenant.toUpperCase();\r\n } else {\r\n projectName = this._tenant.toUpperCase() + \"IntakeApp\";\r\n }\r\n //console.log(projectName);\r\n this._apiCallsService.getProjectByName(projectName)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n // alert(JSON.stringify(data));\r\n this._teamProjectId = data.body[0].teamProjectId;\r\n // alert(this._teamProjectId);\r\n if (this._isIntake === false) {\r\n //console.log('Is Not Intake Officer');\r\n this._getChannelByName();\r\n } else {\r\n this.showPage = true;\r\n }\r\n } else {\r\n console.error(\"error getting project by name\", data)\r\n }\r\n });\r\n }\r\n\r\n _getChannelByName() {\r\n let channelName = \"PO_\" + this.officerData.chatUserKeyNavigation.channelUserId;\r\n this._apiCallsService.getChannelByNameAndProjectId(channelName, this._teamProjectId)\r\n .subscribe(data => {\r\n if (data.status === 200) {\r\n let channels = data.body;\r\n if (channels.length > 0) {\r\n this.channelInfo = channels[0];\r\n this._officerChannelId = channels[0].channelId;\r\n this.showPage = true;\r\n this.channelInitialize();\r\n }\r\n } else {\r\n console.error(\"error getting channel by name\", data)\r\n }\r\n });\r\n }\r\n\r\n channelInitialize() {\r\n return this._channelService.join(this._officerChannelId);\r\n }\r\n\r\n setConnectionStatus(status: any) {\r\n this.connectionStatus = status;\r\n }\r\n\r\n // ? ...\r\n reconnect() {\r\n window.location.reload();\r\n // this.router.navigate([`intakeapp/${this._tenant.toLowerCase()}`]);\r\n // this.showPage = false;\r\n // this.ngOnInit();\r\n }\r\n\r\n isSignedIn(): boolean {\r\n return this._isSignedIn;\r\n }\r\n}\r\n","\r\n
\r\n
\r\n
\r\n
\r\n

{{_tenant | uppercase}} Video Intake

\r\n

{{_tenant | uppercase}} Video App

\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \"Company\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n Connection: {{connectionStatus}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./af\": 62275,\n\t\"./af.js\": 62275,\n\t\"./ar\": 90857,\n\t\"./ar-dz\": 11218,\n\t\"./ar-dz.js\": 11218,\n\t\"./ar-kw\": 14754,\n\t\"./ar-kw.js\": 14754,\n\t\"./ar-ly\": 66680,\n\t\"./ar-ly.js\": 66680,\n\t\"./ar-ma\": 92178,\n\t\"./ar-ma.js\": 92178,\n\t\"./ar-sa\": 56522,\n\t\"./ar-sa.js\": 56522,\n\t\"./ar-tn\": 95682,\n\t\"./ar-tn.js\": 95682,\n\t\"./ar.js\": 90857,\n\t\"./az\": 70164,\n\t\"./az.js\": 70164,\n\t\"./be\": 79774,\n\t\"./be.js\": 79774,\n\t\"./bg\": 60947,\n\t\"./bg.js\": 60947,\n\t\"./bm\": 21832,\n\t\"./bm.js\": 21832,\n\t\"./bn\": 89650,\n\t\"./bn-bd\": 74477,\n\t\"./bn-bd.js\": 74477,\n\t\"./bn.js\": 89650,\n\t\"./bo\": 66005,\n\t\"./bo.js\": 66005,\n\t\"./br\": 98492,\n\t\"./br.js\": 98492,\n\t\"./bs\": 70534,\n\t\"./bs.js\": 70534,\n\t\"./ca\": 52061,\n\t\"./ca.js\": 52061,\n\t\"./cs\": 84737,\n\t\"./cs.js\": 84737,\n\t\"./cv\": 61167,\n\t\"./cv.js\": 61167,\n\t\"./cy\": 77996,\n\t\"./cy.js\": 77996,\n\t\"./da\": 9528,\n\t\"./da.js\": 9528,\n\t\"./de\": 14540,\n\t\"./de-at\": 49430,\n\t\"./de-at.js\": 49430,\n\t\"./de-ch\": 67978,\n\t\"./de-ch.js\": 67978,\n\t\"./de.js\": 14540,\n\t\"./dv\": 83426,\n\t\"./dv.js\": 83426,\n\t\"./el\": 6616,\n\t\"./el.js\": 6616,\n\t\"./en-au\": 63816,\n\t\"./en-au.js\": 63816,\n\t\"./en-ca\": 32162,\n\t\"./en-ca.js\": 32162,\n\t\"./en-gb\": 83305,\n\t\"./en-gb.js\": 83305,\n\t\"./en-ie\": 61954,\n\t\"./en-ie.js\": 61954,\n\t\"./en-il\": 43060,\n\t\"./en-il.js\": 43060,\n\t\"./en-in\": 59923,\n\t\"./en-in.js\": 59923,\n\t\"./en-nz\": 13540,\n\t\"./en-nz.js\": 13540,\n\t\"./en-sg\": 16505,\n\t\"./en-sg.js\": 16505,\n\t\"./eo\": 41907,\n\t\"./eo.js\": 41907,\n\t\"./es\": 86640,\n\t\"./es-do\": 41246,\n\t\"./es-do.js\": 41246,\n\t\"./es-mx\": 56131,\n\t\"./es-mx.js\": 56131,\n\t\"./es-us\": 36430,\n\t\"./es-us.js\": 36430,\n\t\"./es.js\": 86640,\n\t\"./et\": 62551,\n\t\"./et.js\": 62551,\n\t\"./eu\": 32711,\n\t\"./eu.js\": 32711,\n\t\"./fa\": 54572,\n\t\"./fa.js\": 54572,\n\t\"./fi\": 33390,\n\t\"./fi.js\": 33390,\n\t\"./fil\": 87860,\n\t\"./fil.js\": 87860,\n\t\"./fo\": 48216,\n\t\"./fo.js\": 48216,\n\t\"./fr\": 99291,\n\t\"./fr-ca\": 98527,\n\t\"./fr-ca.js\": 98527,\n\t\"./fr-ch\": 58407,\n\t\"./fr-ch.js\": 58407,\n\t\"./fr.js\": 99291,\n\t\"./fy\": 47054,\n\t\"./fy.js\": 47054,\n\t\"./ga\": 49540,\n\t\"./ga.js\": 49540,\n\t\"./gd\": 73917,\n\t\"./gd.js\": 73917,\n\t\"./gl\": 51486,\n\t\"./gl.js\": 51486,\n\t\"./gom-deva\": 56245,\n\t\"./gom-deva.js\": 56245,\n\t\"./gom-latn\": 48868,\n\t\"./gom-latn.js\": 48868,\n\t\"./gu\": 59652,\n\t\"./gu.js\": 59652,\n\t\"./he\": 89019,\n\t\"./he.js\": 89019,\n\t\"./hi\": 42040,\n\t\"./hi.js\": 42040,\n\t\"./hr\": 63402,\n\t\"./hr.js\": 63402,\n\t\"./hu\": 79322,\n\t\"./hu.js\": 79322,\n\t\"./hy-am\": 27609,\n\t\"./hy-am.js\": 27609,\n\t\"./id\": 57942,\n\t\"./id.js\": 57942,\n\t\"./is\": 98275,\n\t\"./is.js\": 98275,\n\t\"./it\": 73053,\n\t\"./it-ch\": 4378,\n\t\"./it-ch.js\": 4378,\n\t\"./it.js\": 73053,\n\t\"./ja\": 46176,\n\t\"./ja.js\": 46176,\n\t\"./jv\": 679,\n\t\"./jv.js\": 679,\n\t\"./ka\": 92726,\n\t\"./ka.js\": 92726,\n\t\"./kk\": 72953,\n\t\"./kk.js\": 72953,\n\t\"./km\": 86957,\n\t\"./km.js\": 86957,\n\t\"./kn\": 59181,\n\t\"./kn.js\": 59181,\n\t\"./ko\": 47148,\n\t\"./ko.js\": 47148,\n\t\"./ku\": 27752,\n\t\"./ku.js\": 27752,\n\t\"./ky\": 65675,\n\t\"./ky.js\": 65675,\n\t\"./lb\": 41263,\n\t\"./lb.js\": 41263,\n\t\"./lo\": 65746,\n\t\"./lo.js\": 65746,\n\t\"./lt\": 11143,\n\t\"./lt.js\": 11143,\n\t\"./lv\": 38753,\n\t\"./lv.js\": 38753,\n\t\"./me\": 44054,\n\t\"./me.js\": 44054,\n\t\"./mi\": 31573,\n\t\"./mi.js\": 31573,\n\t\"./mk\": 30202,\n\t\"./mk.js\": 30202,\n\t\"./ml\": 68523,\n\t\"./ml.js\": 68523,\n\t\"./mn\": 79794,\n\t\"./mn.js\": 79794,\n\t\"./mr\": 56681,\n\t\"./mr.js\": 56681,\n\t\"./ms\": 56975,\n\t\"./ms-my\": 39859,\n\t\"./ms-my.js\": 39859,\n\t\"./ms.js\": 56975,\n\t\"./mt\": 3691,\n\t\"./mt.js\": 3691,\n\t\"./my\": 5152,\n\t\"./my.js\": 5152,\n\t\"./nb\": 7607,\n\t\"./nb.js\": 7607,\n\t\"./ne\": 21526,\n\t\"./ne.js\": 21526,\n\t\"./nl\": 86368,\n\t\"./nl-be\": 40076,\n\t\"./nl-be.js\": 40076,\n\t\"./nl.js\": 86368,\n\t\"./nn\": 68420,\n\t\"./nn.js\": 68420,\n\t\"./oc-lnc\": 51906,\n\t\"./oc-lnc.js\": 51906,\n\t\"./pa-in\": 94504,\n\t\"./pa-in.js\": 94504,\n\t\"./pl\": 54721,\n\t\"./pl.js\": 54721,\n\t\"./pt\": 74645,\n\t\"./pt-br\": 54548,\n\t\"./pt-br.js\": 54548,\n\t\"./pt.js\": 74645,\n\t\"./ro\": 71977,\n\t\"./ro.js\": 71977,\n\t\"./ru\": 26042,\n\t\"./ru.js\": 26042,\n\t\"./sd\": 78849,\n\t\"./sd.js\": 78849,\n\t\"./se\": 27739,\n\t\"./se.js\": 27739,\n\t\"./si\": 50084,\n\t\"./si.js\": 50084,\n\t\"./sk\": 92449,\n\t\"./sk.js\": 92449,\n\t\"./sl\": 23086,\n\t\"./sl.js\": 23086,\n\t\"./sq\": 33139,\n\t\"./sq.js\": 33139,\n\t\"./sr\": 30607,\n\t\"./sr-cyrl\": 30063,\n\t\"./sr-cyrl.js\": 30063,\n\t\"./sr.js\": 30607,\n\t\"./ss\": 40131,\n\t\"./ss.js\": 40131,\n\t\"./sv\": 21665,\n\t\"./sv.js\": 21665,\n\t\"./sw\": 5642,\n\t\"./sw.js\": 5642,\n\t\"./ta\": 33622,\n\t\"./ta.js\": 33622,\n\t\"./te\": 74825,\n\t\"./te.js\": 74825,\n\t\"./tet\": 48336,\n\t\"./tet.js\": 48336,\n\t\"./tg\": 39238,\n\t\"./tg.js\": 39238,\n\t\"./th\": 99463,\n\t\"./th.js\": 99463,\n\t\"./tk\": 39986,\n\t\"./tk.js\": 39986,\n\t\"./tl-ph\": 29672,\n\t\"./tl-ph.js\": 29672,\n\t\"./tlh\": 40043,\n\t\"./tlh.js\": 40043,\n\t\"./tr\": 51212,\n\t\"./tr.js\": 51212,\n\t\"./tzl\": 50110,\n\t\"./tzl.js\": 50110,\n\t\"./tzm\": 80482,\n\t\"./tzm-latn\": 38309,\n\t\"./tzm-latn.js\": 38309,\n\t\"./tzm.js\": 80482,\n\t\"./ug-cn\": 42495,\n\t\"./ug-cn.js\": 42495,\n\t\"./uk\": 54157,\n\t\"./uk.js\": 54157,\n\t\"./ur\": 80984,\n\t\"./ur.js\": 80984,\n\t\"./uz\": 64141,\n\t\"./uz-latn\": 43662,\n\t\"./uz-latn.js\": 43662,\n\t\"./uz.js\": 64141,\n\t\"./vi\": 12607,\n\t\"./vi.js\": 12607,\n\t\"./x-pseudo\": 66460,\n\t\"./x-pseudo.js\": 66460,\n\t\"./yo\": 92948,\n\t\"./yo.js\": 92948,\n\t\"./zh-cn\": 62658,\n\t\"./zh-cn.js\": 62658,\n\t\"./zh-hk\": 39352,\n\t\"./zh-hk.js\": 39352,\n\t\"./zh-mo\": 38274,\n\t\"./zh-mo.js\": 38274,\n\t\"./zh-tw\": 98451,\n\t\"./zh-tw.js\": 98451\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","/* (ignored) */"],"names":[],"sourceRoot":"webpack:///"}