Skip to content

Commit 11a5922

Browse files
authored
Updated documentation after renaming (#15)
* Basic setup of COM server and presence provider * Added the basic implementations of all the interfaces and more than basic of some interfaces Made a separate file for the AutomationBase class Fixed the logic for registering the type library by fixing the path given Added a new tlb extracted from Skype for Business Added a global exception handler Completed the implementation of IMClientContact class Completed the implementation of IMClientSelf class Added several dependent classes such as IMClientContactInformationDictionary, IMClientContactSettingDictionary Added the basic implementation of IContactEndpoint, IContactManager, IContactSubscription, IGroup, IGroupCollection, ILocaleString interfaces * Review fixes * Added the logic of showing the presence icon fetching status from Mattermost when Outlook starts Added required attributes like ComVisible and ComSourceInterfaces on top of all the classes Added some required Nuget packages like System.Text.Json etc and modified .gitignore to avoid the packages Added the logic to return different values from GetContactInformation depending on the type of value requested Made a HTTP client and added the necessary headers Made the self object by hard-coding the email id of the current user Added the logic of fetching the Mattermost server url from the registry and making a request for fetching status of a user Made a Constants class for storing the mapping between the Mattermost status and the Outlook availability Added a basic implementation of the IAsyncOperation interface and the Lookup method in the IMClientContactManager class * Added EOF in all the files * Removed useless imports from all the files * Removed useless directives and deleted useless file * Added polling strategy to trigger presence updates for all the contacts Fixed the presence text not showing in Outlook using ContactInformationType.ucPresenceActivityId Made a map in constants mapping availabilities with values of activity id Changed the logic in CanStart method of IMClientContact and the value of UnifiedCommunicationType property to observe the changes Solved the issue in triggering the presence change by returning the uri from ContactInformationType.ucPresenceInstantMessageAddresses in the GetContactInformation method Made a class IMClientContactInformationChangedEventData which implements ContactInformationChangedEventData Added the logic for handling groups in IMClientContactManager class Modified the call to OnLookup callback function Added a timer which runs in an interval of 10 seconds to trigger OnContactInformationChangedEvent for every contact in the list * Review fixes * Created a websocket client to connect to Mattermost websocket and added proper handling Moved all the Mattermost client related logic in a separate client class Added the logic to connect to Mattermost websocket and added an event handler in the ContactSubscription class to trigger presence change events for subscribed contacts Added the logic to use the status got from websocket event and not call the API Added the logic to not use the previous status for a contact but fetch the latest status when pages are changed in Outlook Changed the logic inside the ContactManager.Lookup function and added comments Optimized the way subscribed contacts are stored in the ContactSubscription class * Review fixes * Review fixes * Removed useless logs and added some comments Little refactoring * Added authentication with every request to the Mattermost server and the logic to read values from config file Uncommented and modified the logic to register the type library Modified the client to read the values from a config.json file and create one if doesn't exist Added the logic to send the secret with every request to the Mattermost server Changed the websocket reconnection timeout to 30 seconds * Implemented the status cache and added a setup project Created a store class to store the statuses for all the Mattermost users Added the logic to always return the availability from the store and always update the store based on websocket event Added the logic to initialize the store when the app starts Removed the hard coded self url from the ClientBase class Added and configured a setup project to create a setup for the app * Renamed the setup project as BuildSetup and modified .gitignore * Final refactoring Fixed the logic of creating entries in the registry so that Outlook can look for the app * Added empty ci.yml file in Github workflows * Added basic test setup for the CI script * Added CI script to create build and release in Github Modified the Author, Manufacturer and TargetFramework of the setup project Made the websocket reconnection timeout configurable via config.json Replaced all occurences of "" with string.Empty * Modified the CI workflow to run for tags only * Modified the name of the final zip file to contain the github tag * Fixed the filename of the zip created after the build in CI * Fixed the assembly name for the CSExeCOMServer * Added documentation * Added logging through a log file * WIP: Added the logic of creating entries in the registry while installing the app * Added logging through Event logs and completed the logic of creating registry entries while installing Removed logging in a file logic from the app.config Added logic to create a new event log and source while installing the setup project Added the newly created event source as the trace listener Improved logging of errors by adding message with the stack trace * Added the logic to specify a size for the event log * Improved logging in the app to figure out the cause of the error * Added the logic to sign the build with a certificate in the CI yml script * WIP: Adding the logic to start the app after installation Removed unused packages and references from the project Updated the versions of the existing packages being used Added the logic to start the app on user login or Windows startup Added a custom action in the setup project to run the app after installation automatically * Changed the name of the shortcut created in Start Menu after the install * Refactored the code in the installer class Removed useless code and changed the logging Changed the Commit method along with the Commited event handler and the constructor * Renamed the setup project to MMPresenceProviderSetup * Did some more changes related to renaming of the setup project * Renamed the PresenceProvider directory to MMPresenceProviderImpl * Renamed CSExeCOMServer and CSExeCOMServerTest to MMPresenceProvider * Changed the name of the namespace OutlookPresenceProvider to MMPresenceProviderImpl * Refactored the code and fixed the Dotnet version requirement in the setup project * Fixed a renaming bug in the CI * Removed the setup project from debug build configuration in the sln file * Review fixes * Updated documentation after renaming
1 parent 160d038 commit 11a5922

File tree

4 files changed

+43
-106
lines changed

4 files changed

+43
-106
lines changed

MMPresenceProvider/MMPresenceProvider.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,4 +152,4 @@
152152
<PostBuildEvent>
153153
</PostBuildEvent>
154154
</PropertyGroup>
155-
</Project>
155+
</Project>

MMPresenceProvider/Program.cs

-4
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ static void Main(string[] args)
4040
// Enable the app to be run on Windows startup
4141
Startup.EnableStartup(currentDir, MMPresenceProviderImpl.PresenceProvider.COMAppExeName);
4242

43-
Installer install = new Installer(OutlookPresenceProvider.PresenceProvider.COMAppExeName);
44-
// Enable the app to be run on Windows startup
45-
Startup.EnableStartup(currentDir, OutlookPresenceProvider.PresenceProvider.COMAppExeName);
46-
4743
CSExeCOMServer.ExeCOMServer.Instance.OnCOMReady += new CSExeCOMServer.ExeCOMServer.OnCOMHosted(OnCOMReady);
4844
// Run the out-of-process COM server
4945
CSExeCOMServer.ExeCOMServer.Instance.Run(typeof(MMPresenceProviderImpl.PresenceProvider), true);

MMPresenceProviderSetup/MMPresenceProviderSetup.vdproj

+29-91
Original file line numberDiff line numberDiff line change
@@ -405,8 +405,8 @@
405405
}
406406
"Entry"
407407
{
408-
"MsmKey" = "8:_FAF12FB42146BB7C863FC2FDFF25A6DB"
409-
"OwnerKey" = "8:_10254545E41146F5AB63CD2B251C0BE3"
408+
"MsmKey" = "8:_UNDEFINED"
409+
"OwnerKey" = "8:_58307362CDDF7C86C3082B4763B46D21"
410410
"MsmSig" = "8:_UNDEFINED"
411411
}
412412
"Entry"
@@ -732,68 +732,6 @@
732732
"IsDependency" = "11:TRUE"
733733
"IsolateTo" = "8:"
734734
}
735-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2B6CA74C930151F301422EF1016EA71A"
736-
{
737-
"AssemblyRegister" = "3:1"
738-
"AssemblyIsInGAC" = "11:FALSE"
739-
"AssemblyAsmDisplayName" = "8:Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
740-
"ScatterAssemblies"
741-
{
742-
"_2B6CA74C930151F301422EF1016EA71A"
743-
{
744-
"Name" = "8:Microsoft.Bcl.AsyncInterfaces.dll"
745-
"Attributes" = "3:512"
746-
}
747-
}
748-
"SourcePath" = "8:Microsoft.Bcl.AsyncInterfaces.dll"
749-
"TargetName" = "8:"
750-
"Tag" = "8:"
751-
"Folder" = "8:_7B0911FFC0404DA390170CCE6287BC92"
752-
"Condition" = "8:"
753-
"Transitive" = "11:FALSE"
754-
"Vital" = "11:TRUE"
755-
"ReadOnly" = "11:FALSE"
756-
"Hidden" = "11:FALSE"
757-
"System" = "11:FALSE"
758-
"Permanent" = "11:FALSE"
759-
"SharedLegacy" = "11:FALSE"
760-
"PackageAs" = "3:1"
761-
"Register" = "3:1"
762-
"Exclude" = "11:FALSE"
763-
"IsDependency" = "11:TRUE"
764-
"IsolateTo" = "8:"
765-
}
766-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3C0ED82458F07439481CFD35E382B62C"
767-
{
768-
"AssemblyRegister" = "3:1"
769-
"AssemblyIsInGAC" = "11:FALSE"
770-
"AssemblyAsmDisplayName" = "8:System.Text.Json, Version=6.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
771-
"ScatterAssemblies"
772-
{
773-
"_3C0ED82458F07439481CFD35E382B62C"
774-
{
775-
"Name" = "8:System.Text.Json.dll"
776-
"Attributes" = "3:512"
777-
}
778-
}
779-
"SourcePath" = "8:System.Text.Json.dll"
780-
"TargetName" = "8:"
781-
"Tag" = "8:"
782-
"Folder" = "8:_7B0911FFC0404DA390170CCE6287BC92"
783-
"Condition" = "8:"
784-
"Transitive" = "11:FALSE"
785-
"Vital" = "11:TRUE"
786-
"ReadOnly" = "11:FALSE"
787-
"Hidden" = "11:FALSE"
788-
"System" = "11:FALSE"
789-
"Permanent" = "11:FALSE"
790-
"SharedLegacy" = "11:FALSE"
791-
"PackageAs" = "3:1"
792-
"Register" = "3:1"
793-
"Exclude" = "11:FALSE"
794-
"IsDependency" = "11:TRUE"
795-
"IsolateTo" = "8:"
796-
}
797735
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_517567C3DD6D67FC0957E39300561282"
798736
{
799737
"AssemblyRegister" = "3:1"
@@ -1166,20 +1104,20 @@
11661104
"IsDependency" = "11:TRUE"
11671105
"IsolateTo" = "8:"
11681106
}
1169-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F4A63772764FEE3B2FBF2B5CD1A0661A"
1107+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E3C16D9F9DAF12C8CDA52DCEAA00F59E"
11701108
{
11711109
"AssemblyRegister" = "3:1"
11721110
"AssemblyIsInGAC" = "11:FALSE"
1173-
"AssemblyAsmDisplayName" = "8:System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
1111+
"AssemblyAsmDisplayName" = "8:System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
11741112
"ScatterAssemblies"
11751113
{
1176-
"_F4A63772764FEE3B2FBF2B5CD1A0661A"
1114+
"_E3C16D9F9DAF12C8CDA52DCEAA00F59E"
11771115
{
1178-
"Name" = "8:System.Threading.Tasks.Extensions.dll"
1116+
"Name" = "8:System.Memory.dll"
11791117
"Attributes" = "3:512"
11801118
}
11811119
}
1182-
"SourcePath" = "8:System.Threading.Tasks.Extensions.dll"
1120+
"SourcePath" = "8:System.Memory.dll"
11831121
"TargetName" = "8:"
11841122
"Tag" = "8:"
11851123
"Folder" = "8:_7B0911FFC0404DA390170CCE6287BC92"
@@ -1197,20 +1135,20 @@
11971135
"IsDependency" = "11:TRUE"
11981136
"IsolateTo" = "8:"
11991137
}
1200-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F87122926F8ED8FAB9B523E5BEAD40A9"
1138+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_E672AA3548FD632DCCD291456C82DDDF"
12011139
{
12021140
"AssemblyRegister" = "3:1"
1203-
"AssemblyIsInGAC" = "11:TRUE"
1204-
"AssemblyAsmDisplayName" = "8:System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
1141+
"AssemblyIsInGAC" = "11:FALSE"
1142+
"AssemblyAsmDisplayName" = "8:System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
12051143
"ScatterAssemblies"
12061144
{
1207-
"_F87122926F8ED8FAB9B523E5BEAD40A9"
1145+
"_E672AA3548FD632DCCD291456C82DDDF"
12081146
{
1209-
"Name" = "8:System.IO.Compression.dll"
1147+
"Name" = "8:System.Buffers.dll"
12101148
"Attributes" = "3:512"
12111149
}
12121150
}
1213-
"SourcePath" = "8:System.IO.Compression.dll"
1151+
"SourcePath" = "8:System.Buffers.dll"
12141152
"TargetName" = "8:"
12151153
"Tag" = "8:"
12161154
"Folder" = "8:_7B0911FFC0404DA390170CCE6287BC92"
@@ -1228,20 +1166,20 @@
12281166
"IsDependency" = "11:TRUE"
12291167
"IsolateTo" = "8:"
12301168
}
1231-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_FEA2C303079DFBF0E9F12C9055068876"
1169+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F4A63772764FEE3B2FBF2B5CD1A0661A"
12321170
{
12331171
"AssemblyRegister" = "3:1"
12341172
"AssemblyIsInGAC" = "11:FALSE"
1235-
"AssemblyAsmDisplayName" = "8:System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
1173+
"AssemblyAsmDisplayName" = "8:System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
12361174
"ScatterAssemblies"
12371175
{
1238-
"_FEA2C303079DFBF0E9F12C9055068876"
1176+
"_F4A63772764FEE3B2FBF2B5CD1A0661A"
12391177
{
1240-
"Name" = "8:System.Runtime.CompilerServices.Unsafe.dll"
1178+
"Name" = "8:System.Threading.Tasks.Extensions.dll"
12411179
"Attributes" = "3:512"
12421180
}
12431181
}
1244-
"SourcePath" = "8:System.Runtime.CompilerServices.Unsafe.dll"
1182+
"SourcePath" = "8:System.Threading.Tasks.Extensions.dll"
12451183
"TargetName" = "8:"
12461184
"Tag" = "8:"
12471185
"Folder" = "8:_7B0911FFC0404DA390170CCE6287BC92"
@@ -1259,20 +1197,20 @@
12591197
"IsDependency" = "11:TRUE"
12601198
"IsolateTo" = "8:"
12611199
}
1262-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_FD8E06253C637384BC5D95A167743C14"
1200+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F87122926F8ED8FAB9B523E5BEAD40A9"
12631201
{
12641202
"AssemblyRegister" = "3:1"
1265-
"AssemblyIsInGAC" = "11:FALSE"
1266-
"AssemblyAsmDisplayName" = "8:System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
1203+
"AssemblyIsInGAC" = "11:TRUE"
1204+
"AssemblyAsmDisplayName" = "8:System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
12671205
"ScatterAssemblies"
12681206
{
1269-
"_FD8E06253C637384BC5D95A167743C14"
1207+
"_F87122926F8ED8FAB9B523E5BEAD40A9"
12701208
{
1271-
"Name" = "8:System.Memory.dll"
1209+
"Name" = "8:System.IO.Compression.dll"
12721210
"Attributes" = "3:512"
12731211
}
12741212
}
1275-
"SourcePath" = "8:System.Memory.dll"
1213+
"SourcePath" = "8:System.IO.Compression.dll"
12761214
"TargetName" = "8:"
12771215
"Tag" = "8:"
12781216
"Folder" = "8:_7B0911FFC0404DA390170CCE6287BC92"
@@ -1290,20 +1228,20 @@
12901228
"IsDependency" = "11:TRUE"
12911229
"IsolateTo" = "8:"
12921230
}
1293-
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_FDC625F01E9A167B14CB3065FB737032"
1231+
"{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_FEA2C303079DFBF0E9F12C9055068876"
12941232
{
12951233
"AssemblyRegister" = "3:1"
12961234
"AssemblyIsInGAC" = "11:FALSE"
1297-
"AssemblyAsmDisplayName" = "8:System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"
1235+
"AssemblyAsmDisplayName" = "8:System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
12981236
"ScatterAssemblies"
12991237
{
1300-
"_FDC625F01E9A167B14CB3065FB737032"
1238+
"_FEA2C303079DFBF0E9F12C9055068876"
13011239
{
1302-
"Name" = "8:System.Buffers.dll"
1240+
"Name" = "8:System.Runtime.CompilerServices.Unsafe.dll"
13031241
"Attributes" = "3:512"
13041242
}
13051243
}
1306-
"SourcePath" = "8:System.Buffers.dll"
1244+
"SourcePath" = "8:System.Runtime.CompilerServices.Unsafe.dll"
13071245
"TargetName" = "8:"
13081246
"Tag" = "8:"
13091247
"Folder" = "8:_7B0911FFC0404DA390170CCE6287BC92"

0 commit comments

Comments
 (0)