Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: implement ChatList #2997

Open
wants to merge 255 commits into
base: next/mgt-chat
Choose a base branch
from

Conversation

seekdavidlee
Copy link

PR Type

  • Feature

Description of the changes

Added a ChatList component that contains the following subcomponents:

  • A ChatListHeader on that top that contains one or more buttons on the left and menu with one or more dropdown items on the right. We should note that the "Mark all as read" dropdown menu item will always be shown and will toggle UI change to each ChatListItem where text will be unbold.
  • A list of paged ChatListItem that represents individual chats. A "Load More" button will be shown if the number of chats exceed the configured chats.
  • A status banner will appear that shows the following connection status which should be self-explanatory. The banner will be hidden if ChatList is connected.
    • Connecting...
    • We ran into a problem. Reconnecting...

Subscription details:

PR checklist

  • Project builds (yarn build) and changes have been tested in at least two supported browsers (Edge + non-Chromium based browser)
  • All public APIs (classes, methods, etc) have been documented following the jsdoc syntax
  • Stories have been added and existing stories have been tested
  • Added appropriate documentation. Docs PR:
  • License header has been added to all new source files (yarn setLicense)
  • Contains NO breaking changes

Other information

plasne and others added 30 commits December 15, 2023 15:31
rename className for loadMore
menu does not require icon
…mber

Fix bug where chat members being added doesn't update title in ChatList
[BUGFIX] New chats created by a user should be READ for them.
[BUGFIX] Fixed issue whereby server connection established was overridden
@@ -0,0 +1 @@
(()=>{"use strict";var e={};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{var t;e.g.importScripts&&(t=e.g.location+"");var n=e.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var a=n.getElementsByTagName("script");if(a.length)for(var i=a.length-1;i>-1&&!t;)t=a[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t})();var t=[{"id":"78b11c7d-7ca8-47cb-a93c-d3beabb519a1","alias":"MgtSpfxLibrary","componentType":"Library","version":"3.0.1","manifestVersion":2,"loaderConfig":{"internalModuleBaseUrls":["https://localhost:4321/dist/"],"entryModuleId":"mgt-library","scriptResources":{"mgt-library":{"type":"path","path":"mgt-library_c60f15e144a88710925f.js"},"@microsoft/microsoft-graph-client":{"type":"component","id":"32b9363b-09ff-4959-929a-cab2663fb223","version":"3.0.2"}}}}];function n(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(window.location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))}var a={_metadata:undefined,getManifests:function(){var a=JSON.parse(JSON.stringify(t),function(e,t){if("paths"===e){var n=t,a={};for(var i in n.l)a[i]="".concat(n.p).concat(n.l[i]).concat(n.s);return a}return t}),i=""||e.p,r=n("market")||n("locale");r&&(r=r.toLowerCase()),i||console.error("Unable to determine ".concat("manifests.js"," file URL. Using default base URL. ")+'This is expected if you are running "gulp serve."');for(var o=0,s=a;o<s.length;o++){var c=s[o].loaderConfig;if(i&&(c.internalModuleBaseUrls&&0!==c.internalModuleBaseUrls.length||(c.internalModuleBaseUrls=[i])),r)for(var d=c.scriptResources,l=0,u=Object.keys(d);l<u.length;l++){var f=d[u[l]];if("localizedPath"===f.type){var p=f,m=p.paths;if(m)for(var _=0,h=Object.keys(m);_<h.length;_++){var b=h[_];if(b.toLowerCase()===r){p.defaultPath=m[b],delete p.paths;break}}}}}return a}};self.debugManifests=a,define([],function(){return a})})();

Check failure

Code scanning / CodeQL

Incomplete string escaping or encoding High

This replaces only the first occurrence of /[\]]/.
@@ -0,0 +1 @@
(()=>{"use strict";var e={};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{var t;e.g.importScripts&&(t=e.g.location+"");var n=e.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var a=n.getElementsByTagName("script");if(a.length)for(var i=a.length-1;i>-1&&!t;)t=a[i--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),e.p=t})();var t=[{"id":"78b11c7d-7ca8-47cb-a93c-d3beabb519a1","alias":"MgtSpfxLibrary","componentType":"Library","version":"3.0.1","manifestVersion":2,"loaderConfig":{"internalModuleBaseUrls":["https://localhost:4321/dist/"],"entryModuleId":"mgt-library","scriptResources":{"mgt-library":{"type":"path","path":"mgt-library_c60f15e144a88710925f.js"},"@microsoft/microsoft-graph-client":{"type":"component","id":"32b9363b-09ff-4959-929a-cab2663fb223","version":"3.0.2"}}}}];function n(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(window.location.search);return null===t?"":decodeURIComponent(t[1].replace(/\+/g," "))}var a={_metadata:undefined,getManifests:function(){var a=JSON.parse(JSON.stringify(t),function(e,t){if("paths"===e){var n=t,a={};for(var i in n.l)a[i]="".concat(n.p).concat(n.l[i]).concat(n.s);return a}return t}),i=""||e.p,r=n("market")||n("locale");r&&(r=r.toLowerCase()),i||console.error("Unable to determine ".concat("manifests.js"," file URL. Using default base URL. ")+'This is expected if you are running "gulp serve."');for(var o=0,s=a;o<s.length;o++){var c=s[o].loaderConfig;if(i&&(c.internalModuleBaseUrls&&0!==c.internalModuleBaseUrls.length||(c.internalModuleBaseUrls=[i])),r)for(var d=c.scriptResources,l=0,u=Object.keys(d);l<u.length;l++){var f=d[u[l]];if("localizedPath"===f.type){var p=f,m=p.paths;if(m)for(var _=0,h=Object.keys(m);_<h.length;_++){var b=h[_];if(b.toLowerCase()===r){p.defaultPath=m[b],delete p.paths;break}}}}}return a}};self.debugManifests=a,define([],function(){return a})})();

Check failure

Code scanning / CodeQL

Incomplete string escaping or encoding High

This replaces only the first occurrence of /[\[]/.
plasne and others added 25 commits March 1, 2024 15:10
Fix refresh issues with ChatList selection
[BUGFIX] Getting presence on login no longer causes sign-out
Vinay/mgt proxy support: Added support for the MGT web proxy
[VS]: Updated the proxy renewal code to support renewal cache.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress 🚧
Development

Successfully merging this pull request may close these issues.

6 participants