OfficeDev / office-js

A repo and NPM package for Office.js, corresponding to a copy of what gets published to the official "evergreen" Office.js CDN, at https://appsforoffice.microsoft.com/lib/1/hosted/office.js.
https://learn.microsoft.com/javascript/api/overview
Other
670 stars 96 forks source link

Contextual addin not highlighting text in Outlook desktop client #2845

Closed jkopyto closed 9 months ago

jkopyto commented 2 years ago

Your Environment

Expected behavior

I expect contextual addin to correctly highlight text in both the browser and the desktop application.

Current behavior

Contextual addin correctly detects and highlights text in the browser, but nothing happens in the desktop application. I suspect the problem is with the regex, docs clearly state that Outlook evaluates regular expressions based on the rules for the JavaScript interpreter used by the browser on the client computer, but there is no info about desktop clients.

Provide additional details

manifest.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
  xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
  <Id>208cdca2-8084-4bbd-8b52-21c281f8d005</Id>
  <Version>1.0.2</Version>
  <ProviderName>Provider</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="Contextual addin"/>
  <Description DefaultValue="Description"/>
  <IconUrl DefaultValue="https://localhost:3000/assets/img_64.png"/>
  <HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/img_128.png"/>
  <SupportUrl DefaultValue="https://appdomain.com/contact/"/>
  <AppDomains>
    <AppDomain>https://appdomain.com</AppDomain>
  </AppDomains>
  <Hosts>
    <Host Name="Mailbox"/>
  </Hosts>
  <Requirements>
    <Sets>
      <Set Name="Mailbox" MinVersion="1.1"/>
    </Sets>
  </Requirements>
  <FormSettings>
    <Form xsi:type="ItemRead">
      <DesktopSettings>
        <SourceLocation DefaultValue="https://localhost:3000/taskpane.html"/>
        <RequestedHeight>250</RequestedHeight>
      </DesktopSettings>
    </Form>
    <Form xsi:type="ItemEdit">
      <DesktopSettings>
        <SourceLocation DefaultValue="https://localhost:3000/taskpane.html"/>
      </DesktopSettings>
    </Form>
  </FormSettings>
  <Permissions>ReadWriteItem</Permissions>
  <Rule xsi:type="RuleCollection" Mode="Or">
      <Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" />
      <Rule xsi:type="ItemIs" ItemType="Message" FormType="Edit"/>
  </Rule>
  <DisableEntityHighlighting>false</DisableEntityHighlighting>
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
    <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
      <Requirements>
        <bt:Sets DefaultMinVersion="1.5">
          <bt:Set Name="Mailbox"/>
        </bt:Sets>
      </Requirements>
      <Hosts>
        <Host xsi:type="MailHost">
          <DesktopFormFactor>
            <!-- DectectedEntity -->
            <ExtensionPoint xsi:type="DetectedEntity">
              <Label resid="DetectedMessage.Label"/>
              <SourceLocation resid="detectedEntityUrl"/>
              <Rule xsi:type="RuleCollection" Mode="And">
                <Rule xsi:type="ItemIs" ItemType="Message" />
                <Rule xsi:type="ItemHasRegularExpressionMatch" RegExName="detectedMessage" RegExValue="(|^)(?&lt;=BEGIN MESSAGE \u2010{4}).*?(?=\u2010{4} END MESSAGE \u2010{4})" PropertyName="BodyAsPlaintext" />
              </Rule>
            </ExtensionPoint>
          </DesktopFormFactor>
        </Host>
      </Hosts>
      <Resources>
        <bt:Images>
          <bt:Image id="Icon.16x16" DefaultValue="https://localhost:3000/assets/img_16.png"/>
          <bt:Image id="Icon.32x32" DefaultValue="https://localhost:3000/assets/img_32.png"/>
          <bt:Image id="Icon.80x80" DefaultValue="https://localhost:3000/assets/img_80.png"/>
        </bt:Images>
        <bt:Urls>
          <bt:Url id="detectedEntityUrl" DefaultValue="https://localhost:3000/detection.html"/>
        </bt:Urls>
        <bt:ShortStrings>
          <bt:String id="DetectedMessage.Label" DefaultValue="Message"/>
        </bt:ShortStrings>
      </Resources>
    </VersionOverrides>
  </VersionOverrides>
</OfficeApp>

Context

I would like regex to activate contextual addin which will highlight the text contained between "---- BEGIN MESSAGE ----" and "---- END MESSAGE ----". The screenshot below shows that the regex I wrote activates contextual addin in the browser. I would like a similar result in a desktop outlook. I've also tried putting the Rule over the tags, but without success.

Useful logs

Screenshot from browser image

Email source example from browser client

<div class="x_WordSection1">
    <p class="x_MsoNormal">‐‐‐‐ BEGIN MESSAGE ‐‐‐‐<br aria-hidden="true">
        ew0KICAiZW5jcnlwdGVkVGV4dEJhc2U2NCIgOiAicFdmMzdtaEliMVVtVEFnZHlHbjRxZXNXT1pHdUhnQUNBbG5UK2ZtdU9QYlJ0SDZmWHp2S1NBTk9vWGZkeDlVUFV2S0luWFMzTlRZMUwzSGkvUHJNaWsxS0pWUmQyRzBnWWY0ckV5dU15RmlNWWJWUi9JRkdKc2l5NTdUdmtKRW92czZ6aSs2bml2UU9VUzJFeDZZR1BBPT0iLA0KICAic2lnbmF0dXJlIiA6ICJJTURkZXkyMFJOMFR0bkpoNHNCTDdBQkZsMlc3R2NjUmxIUTRkVVlrYVJwUzRnbHBUMzdGcUhxcjJPdUhvdzU5RHFFTW14cmY0Wng1OE5yUHdvbFQxdHYxYXBFN1JRMkYrdzRiclNDZXE0M2ptQXBSaVBYeVRsZktMTHhLL3JRVjlmbDlCdE9YL2IzUm9NSE8vdjYvamlWVVJaYkVLbllQSmVWMmVZbXJqdjRGYjNwQXFTSkc4NkRQWWxMNzlER1NmMjVSNDR6SjJuZWlFNnZ6WDVRUkM2Wm1WZWpJL0RwcUtQYUorRUtGUmQrUmZSc3Q3SjdnYzhpU0xhNnB2WU4rbWlFQUZrRExnQkwyS0NQN3BjY01wZk1md2VmRnhSWUZiY1A3S1Y0NDA1MkhCcWlQWGVTUU4yRjFRUW1vNWFINlRDTEk3ZjdaZzJQSlc3bkkyMW5RZXlGY2c1Y0VWZENnTG8xaUpZSjJsbFNvTHV2ZTJTeS8zVnQyWFVnUVNBVXhLWUZzMTJBMlZmdENtbm9CL3lyMHB2L0d6c096K3gzeE4yalhRQUR6WlpOVDRLaDIrVWhTRGs2VUF0MzN5ZVN1Y0FOZTludVRiM1pKb01lRUYvcUZRVkIyRlplYm5pa20ycUgxQ2ttZk9oNTl1N2xURERVbmJZeG5NdEJHK1oveSIsDQogICJlbmNyeXB0ZWRLZXlzTGlzdCIgOiBbICJkUmo1Szd0ckJhU2R0TVpNRU92K0h1aTZrZmNpMURCMUpxNUhST3JBWGVpMGROeUJNaXRhbnlFSSszdERUamlwTHNZTGpyQThGN2Y0cG5aSlE5Z2dBNzVsV3VSeVIvOTN6SUZEeS9pRmxMY2VicHlIREczRGFCNWxOK3pCYm5oOGttSTB3UVh4SmlSRHFkSnEyQUdxRGtHdiswcGgyQ3gzRTVkOHAveUpaUEdDSWRxeVU4TXlRSlBBTWZGcEVOa1lJMndpeEY2WVBFaVRHcWlIOTFVbHFGVFJ2MFVkMk16UksrRnIxUTczUXlVRXJtbUtSK2hQV0ZSMnFnaWJSd3VoQjA3OVVScGcySGtyWVcvRzFCUWRvZHlaM3RhRkxWbFFkT1JtRnNIVzI0SXRjemprTmt2OHJZTGE1WEtTZExoaVB5UUFTUjNITUtWbkdQRzZtZGFNcXNiR2xNM1JNWThjZjF6c2xGUHlkN3FSRU9zRUI5VzNDZS8yaEFubElQS3ZXaTdjMnVDaHAzNVFvcHQzSmVJSHNwdGFQdUIyVWszcFlGQ2dnaTkwSGV6WDh4Y2JQaFVVRXpNbUd0N2poZGlhZ09Fd3JnS1VQRnFtVHIzeDdmanVNRnl1bkxvVmkrb255TlNRcEhUSVRnMGJoOWpnMUU2VFg1L0FXRCtHYks5SCIsICJNQ3ljYnkyQWhKbytWWnRpWmVmK3dFWGNzZGlXR2sxZm1ha0tLWi8ycDhEeGh5SjBwRGRJWVI1VnpWSWc0RnRzbnRINjlOWHFnVkdQQUtaVENjc3ZjaStIUDJOQVVzbHFzTkZQbi9GcndZUlM4UzRWNzNObVBHd1dONTN2YkRyemgyZU9RcjZOdFlhbTBmRGRmMnFvQlRPMTRCYnB0cThibUpkbHVpbEpXdTJDN1FFclpCYXVFaVdsa2dSbkdTWmQwcmdWVFVLWEpyRW1EbTltZ01vdHgzL044WVlhRUhRckRteHpZN1dMQVdtVHBGVUR0eWsvckRVTmg5cTczdjBqZVF0bkpzQ0YxZzYvVllEc1J1aUVNQ0ZHZ2tHczE1WWdla3JSWDNzcWZhY0UzSWdZUVVQaUdlS092STdrZDN1c2loNllRU0tnajFFaEpkdHpFRlJsU2pQMllrQnVDSjJTdkFKK2FuNXJPUEptMEovNGVoQUQrRkFtMmRVSzljMjNld1RTUFZlbVl0NFgvUEJaNkxFbGNZUXhTODVHQk90TzJqeVFYSGZZYkFyZ1JkRHJDU2lQOW1QeHhlTFBPV1ltRXE1TzEyR3NFYWVOcGgwblhmTXdkTWJLMHRCbEJ3TW8ya2trai96eldYbHJqQVlRVm15TXYzK3RBOGlsa1ZLNyIgXQ0KfQ==
        <br aria-hidden="true">
        ‐‐‐‐ END MESSAGE ‐‐‐‐
    </p>
</div>

Email source example from desktop client

<div class="WordSection1">
    <p class="MsoNormal">‐‐‐‐ BEGIN CYPHERDOG ENCRYPTED MESSAGE ‐‐‐‐<br>
ew0KICAiZW5jcnlwdGVkVGV4dEJhc2U2NCIgOiAicFdmMzdtaEliMVVtVEFnZHlHbjRxZXNXT1pHdUhnQUNBbG5UK2ZtdU9QYlJ0SDZmWHp2S1NBTk9vWGZkeDlVUFV2S0luWFMzTlRZMUwzSGkvUHJNaWsxS0pWUmQyRzBnWWY0ckV5dU15RmlNWWJWUi9JRkdKc2l5NTdUdmtKRW92czZ6aSs2bml2UU9VUzJFeDZZR1BBPT0iLA0KICAic2lnbmF0dXJlIiA6ICJJTURkZXkyMFJOMFR0bkpoNHNCTDdBQkZsMlc3R2NjUmxIUTRkVVlrYVJwUzRnbHBUMzdGcUhxcjJPdUhvdzU5RHFFTW14cmY0Wng1OE5yUHdvbFQxdHYxYXBFN1JRMkYrdzRiclNDZXE0M2ptQXBSaVBYeVRsZktMTHhLL3JRVjlmbDlCdE9YL2IzUm9NSE8vdjYvamlWVVJaYkVLbllQSmVWMmVZbXJqdjRGYjNwQXFTSkc4NkRQWWxMNzlER1NmMjVSNDR6SjJuZWlFNnZ6WDVRUkM2Wm1WZWpJL0RwcUtQYUorRUtGUmQrUmZSc3Q3SjdnYzhpU0xhNnB2WU4rbWlFQUZrRExnQkwyS0NQN3BjY01wZk1md2VmRnhSWUZiY1A3S1Y0NDA1MkhCcWlQWGVTUU4yRjFRUW1vNWFINlRDTEk3ZjdaZzJQSlc3bkkyMW5RZXlGY2c1Y0VWZENnTG8xaUpZSjJsbFNvTHV2ZTJTeS8zVnQyWFVnUVNBVXhLWUZzMTJBMlZmdENtbm9CL3lyMHB2L0d6c096K3gzeE4yalhRQUR6WlpOVDRLaDIrVWhTRGs2VUF0MzN5ZVN1Y0FOZTludVRiM1pKb01lRUYvcUZRVkIyRlplYm5pa20ycUgxQ2ttZk9oNTl1N2xURERVbmJZeG5NdEJHK1oveSIsDQogICJlbmNyeXB0ZWRLZXlzTGlzdCIgOiBbICJkUmo1Szd0ckJhU2R0TVpNRU92K0h1aTZrZmNpMURCMUpxNUhST3JBWGVpMGROeUJNaXRhbnlFSSszdERUamlwTHNZTGpyQThGN2Y0cG5aSlE5Z2dBNzVsV3VSeVIvOTN6SUZEeS9pRmxMY2VicHlIREczRGFCNWxOK3pCYm5oOGttSTB3UVh4SmlSRHFkSnEyQUdxRGtHdiswcGgyQ3gzRTVkOHAveUpaUEdDSWRxeVU4TXlRSlBBTWZGcEVOa1lJMndpeEY2WVBFaVRHcWlIOTFVbHFGVFJ2MFVkMk16UksrRnIxUTczUXlVRXJtbUtSK2hQV0ZSMnFnaWJSd3VoQjA3OVVScGcySGtyWVcvRzFCUWRvZHlaM3RhRkxWbFFkT1JtRnNIVzI0SXRjemprTmt2OHJZTGE1WEtTZExoaVB5UUFTUjNITUtWbkdQRzZtZGFNcXNiR2xNM1JNWThjZjF6c2xGUHlkN3FSRU9zRUI5VzNDZS8yaEFubElQS3ZXaTdjMnVDaHAzNVFvcHQzSmVJSHNwdGFQdUIyVWszcFlGQ2dnaTkwSGV6WDh4Y2JQaFVVRXpNbUd0N2poZGlhZ09Fd3JnS1VQRnFtVHIzeDdmanVNRnl1bkxvVmkrb255TlNRcEhUSVRnMGJoOWpnMUU2VFg1L0FXRCtHYks5SCIsICJNQ3ljYnkyQWhKbytWWnRpWmVmK3dFWGNzZGlXR2sxZm1ha0tLWi8ycDhEeGh5SjBwRGRJWVI1VnpWSWc0RnRzbnRINjlOWHFnVkdQQUtaVENjc3ZjaStIUDJOQVVzbHFzTkZQbi9GcndZUlM4UzRWNzNObVBHd1dONTN2YkRyemgyZU9RcjZOdFlhbTBmRGRmMnFvQlRPMTRCYnB0cThibUpkbHVpbEpXdTJDN1FFclpCYXVFaVdsa2dSbkdTWmQwcmdWVFVLWEpyRW1EbTltZ01vdHgzL044WVlhRUhRckRteHpZN1dMQVdtVHBGVUR0eWsvckRVTmg5cTczdjBqZVF0bkpzQ0YxZzYvVllEc1J1aUVNQ0ZHZ2tHczE1WWdla3JSWDNzcWZhY0UzSWdZUVVQaUdlS092STdrZDN1c2loNllRU0tnajFFaEpkdHpFRlJsU2pQMllrQnVDSjJTdkFKK2FuNXJPUEptMEovNGVoQUQrRkFtMmRVSzljMjNld1RTUFZlbVl0NFgvUEJaNkxFbGNZUXhTODVHQk90TzJqeVFYSGZZYkFyZ1JkRHJDU2lQOW1QeHhlTFBPV1ltRXE1TzEyR3NFYWVOcGgwblhmTXdkTWJLMHRCbEJ3TW8ya2trai96eldYbHJqQVlRVm15TXYzK3RBOGlsa1ZLNyIgXQ0KfQ==<br>
‐‐‐‐ END CYPHERDOG ENCRYPTED MESSAGE ‐‐‐‐<o:p></o:p></p>
</div>
exextoc commented 1 year ago

Thanks for reporting this issue regarding Regex. It has been put on our backlog. We unfortunately have no timelines to share at this point

kor01-bachem commented 1 year ago

Noticed the same issue, which appears to be due to the lookbehind in the regex (?<=), which works in the browser but not on the Desktop client.

cody-lettau commented 1 year ago

@exextoc is there any update on this? Or is there documentation on where contextual add-ins are supported (those that use regexes)?

ztcdsb commented 11 months ago

@jkopyto Apologies for the delay in response. We have unfortunately have no timeline to share at the moment(as the fix is costly and require efforts from multiple team). It is expected that regex works slightly different between OWA and Win32 Outlook. I would suggest your either:

  1. write 2 set of regex that works for OWA and Win32
  2. try to avoid to detect line break with regex, Win32 use word to render email body, and line break can cause issue sometime