mirror of
https://github.com/Kopano-dev/kopano-ol-extension.git
synced 2023-10-10 13:37:40 +02:00
[KOE-166] Added reminders option to EASAccount for initial setup.
[KOE-166] Added private appointment suppression to impersonated stores
This commit is contained in:
parent
593118f552
commit
1e92f75fe4
@ -234,10 +234,10 @@ namespace Acacia.Features.SharedFolders
|
||||
return share;
|
||||
}
|
||||
|
||||
public static bool IsSharedFolder(IFolder folder)
|
||||
public static bool IsSharedOrImpersonatedFolder(IFolder folder)
|
||||
{
|
||||
string id = (string)folder.GetProperty(OutlookConstants.PR_ZPUSH_SYNC_ID);
|
||||
return id?.StartsWith("S") == true;
|
||||
return id?.StartsWith("S") == true || id?.StartsWith("I") == true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -324,7 +324,7 @@ namespace Acacia.Features.SharedFolders
|
||||
// Check if in a shared folder
|
||||
using (IFolder parent = item.Parent)
|
||||
{
|
||||
if (parent == null || !IsSharedFolder(parent))
|
||||
if (parent == null || !IsSharedOrImpersonatedFolder(parent))
|
||||
{
|
||||
Logger.Instance.TraceExtra(this, "Private appointment: suppress: not in a shared folder");
|
||||
return;
|
||||
|
@ -54,7 +54,7 @@ namespace Acacia.Features.SharedFolders
|
||||
{
|
||||
get
|
||||
{
|
||||
return _folder.SearchCriteria;
|
||||
return _folder?.SearchCriteria;
|
||||
}
|
||||
set
|
||||
{
|
||||
|
@ -414,7 +414,7 @@ namespace Acacia.Features.SharedFolders
|
||||
IRestarter restarter = ThisAddIn.Instance.Restarter();
|
||||
restarter.CloseWindows = true;
|
||||
foreach (StoreTreeNode node in state.stores)
|
||||
restarter.OpenShare(_account, node.User);
|
||||
restarter.OpenShare(_account, node.User, node.ShowReminders);
|
||||
restarter.Restart();
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ namespace Acacia.Stubs
|
||||
/// </summary>
|
||||
/// <param name="account"></param>
|
||||
/// <param name="store"></param>
|
||||
void OpenShare(ZPushAccount account, GABUser store);
|
||||
void OpenShare(ZPushAccount account, GABUser store, bool showReminders);
|
||||
|
||||
/// <summary>
|
||||
/// Performs the actual restart.
|
||||
|
@ -15,7 +15,14 @@ namespace Acacia.Stubs.OutlookWrappers
|
||||
{
|
||||
private readonly AddInWrapper _addIn;
|
||||
private readonly List<ZPushAccount> _resyncAccounts = new List<ZPushAccount>();
|
||||
private readonly List<KeyValuePair<ZPushAccount, GABUser>> _shares = new List<KeyValuePair<ZPushAccount, GABUser>>();
|
||||
|
||||
private struct Share
|
||||
{
|
||||
public ZPushAccount account;
|
||||
public GABUser store;
|
||||
public bool showReminders;
|
||||
}
|
||||
private readonly List<Share> _shares = new List<Share>();
|
||||
|
||||
public Restarter(AddInWrapper addIn)
|
||||
{
|
||||
@ -46,9 +53,12 @@ namespace Acacia.Stubs.OutlookWrappers
|
||||
_resyncAccounts.AddRange(accounts);
|
||||
}
|
||||
|
||||
public void OpenShare(ZPushAccount account, GABUser store)
|
||||
public void OpenShare(ZPushAccount account, GABUser store, bool showReminders)
|
||||
{
|
||||
_shares.Add(new KeyValuePair<ZPushAccount, GABUser>(account, store));
|
||||
_shares.Add(new Share()
|
||||
{
|
||||
account = account, store = store, showReminders = showReminders
|
||||
});
|
||||
}
|
||||
|
||||
public void Restart()
|
||||
@ -75,16 +85,16 @@ namespace Acacia.Stubs.OutlookWrappers
|
||||
|
||||
if (_shares.Count > 0)
|
||||
{
|
||||
foreach (KeyValuePair<ZPushAccount, GABUser> share in _shares)
|
||||
foreach (Share share in _shares)
|
||||
{
|
||||
Logger.Instance.Debug(this, "Adding KOE share: profile={0}, version={1}, accountid={2}, user={3}, email={4}",
|
||||
_addIn.ProfileName, _addIn.VersionMajor, share.Key.Account.AccountId, share.Value.UserName, share.Value.EmailAddress);
|
||||
Logger.Instance.Debug(this, "Adding KOE share: profile={0}, version={1}, accountid={2}, user={3}, email={4}, reminders={5}",
|
||||
_addIn.ProfileName, _addIn.VersionMajor, share.account.Account.AccountId, share.store.UserName, share.store.EmailAddress, share.showReminders);
|
||||
// TODO: escaping
|
||||
commandLine += " /sharekoe " + Util.QuoteCommandLine(_addIn.ProfileName + ":" +
|
||||
_addIn.VersionMajor + ":" +
|
||||
share.Key.Account.AccountId + ":" +
|
||||
share.Value.UserName + ":" + share.Value.EmailAddress + ":" +
|
||||
share.Value.EmailAddress);
|
||||
share.account.Account.AccountId + ":" +
|
||||
share.store.UserName + ":" + share.store.EmailAddress + ":" +
|
||||
share.store.EmailAddress + ":1:" + (share.showReminders ? "1" : "0"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,6 +54,7 @@ static const wstring R_EMAIL = L"Email";
|
||||
static const wstring R_EMAIL_ORIGINAL = L"KOE Share For";
|
||||
static const wstring R_PASSWORD = L"EAS Password";
|
||||
static const wstring R_ONE_MONTH = L"EAS SyncSlider";
|
||||
static const wstring R_SHOW_REMINDERS = L"KOE Reminders";
|
||||
|
||||
struct Account
|
||||
{
|
||||
@ -70,6 +71,7 @@ public:
|
||||
vector<byte> encryptedPassword;
|
||||
wstring dataFolder;
|
||||
bool syncOneMonth;
|
||||
bool showReminders;
|
||||
private:
|
||||
wstring path;
|
||||
int initializedMAPI = 0;
|
||||
@ -139,7 +141,9 @@ public:
|
||||
L"\tpath=%ls\n"
|
||||
L"\tservice=%ls\n"
|
||||
L"\tentryId=%ls\n"
|
||||
L"\taccountId=%.8X\n",
|
||||
L"\taccountId=%.8X\n"
|
||||
L"\toneMonth=%d\n"
|
||||
L"\treminders=%d\n",
|
||||
prefix,
|
||||
profileName.c_str(),
|
||||
outlookVersion.c_str(),
|
||||
@ -156,7 +160,9 @@ public:
|
||||
path.c_str(),
|
||||
ToHex(&service, sizeof(service)).c_str(),
|
||||
ToHex(entryId).c_str(),
|
||||
accountId
|
||||
accountId,
|
||||
syncOneMonth ? 1 : 0,
|
||||
showReminders ? 1 : 0
|
||||
);
|
||||
}
|
||||
void Create()
|
||||
@ -504,6 +510,9 @@ private:
|
||||
if (syncOneMonth)
|
||||
WriteAccountKey(R_ONE_MONTH, (DWORD)1);
|
||||
|
||||
if (!showReminders)
|
||||
WriteAccountKey(R_SHOW_REMINDERS, (DWORD)0);
|
||||
|
||||
WriteAccountKey(L"clsid", L"{ED475415-B0D6-11D2-8C3B-00104B2A6676}");
|
||||
|
||||
WriteAccountKey(R_PASSWORD, &encryptedPassword[0], encryptedPassword.size());
|
||||
@ -654,9 +663,9 @@ int __cdecl wmain(int argc, wchar_t **argv)
|
||||
// Main
|
||||
try
|
||||
{
|
||||
if (argc < 7 || argc > 8)
|
||||
if (argc < 7 || argc > 9)
|
||||
{
|
||||
fwprintf(stderr, L"EASAccount: <profile> <outlook version> <accountid> <username> <email> <display> [1 month]\n");
|
||||
fwprintf(stderr, L"EASAccount: <profile> <outlook version> <accountid> <username> <email> <display> [1 month] [reminders]\n");
|
||||
exit(3);
|
||||
}
|
||||
|
||||
@ -672,6 +681,9 @@ int __cdecl wmain(int argc, wchar_t **argv)
|
||||
account.syncOneMonth = true;
|
||||
if (argc > 7)
|
||||
account.syncOneMonth = !wcscmp(argv[7], L"1");
|
||||
account.showReminders = true;
|
||||
if (argc > 8)
|
||||
account.showReminders = !wcscmp(argv[8], L"1");
|
||||
|
||||
try
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user