Skip to content

Conversation

luancazarine
Copy link
Collaborator

@luancazarine luancazarine commented Sep 5, 2025

Resolves #18109

Summary by CodeRabbit

  • New Features

    • Select a user and a shared folder when working with Outlook messages.
    • Added "Find Shared Folder Email" action.
    • Added "New Email in Shared Folder" event source with sample/test event data.
    • Enhanced email querying: search, filter, and order options (and new search prop in Find Email).
  • Chores

    • Bumped package to 1.6.0 and incremented versions across multiple Outlook actions and sources.

- Added userId and sharedFolderId props for retrieving messages from shared folders.
- Introduced search, filter, and orderBy props for more refined email searches.
- Implemented listUsers and listSharedFolders methods for user and folder management.
- Added new action to find emails in shared folders.
- Updated existing actions and sources with version bumps and minor fixes.
- Bumped component version to 1.6.0.
@luancazarine luancazarine linked an issue Sep 5, 2025 that may be closed by this pull request
Copy link

vercel bot commented Sep 5, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Sep 5, 2025 7:23pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Sep 5, 2025 7:23pm

Copy link
Contributor

coderabbitai bot commented Sep 5, 2025

Warning

Rate limit exceeded

@luancazarine has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 21 minutes and 27 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between a328a5d and 05bc437.

📒 Files selected for processing (2)
  • components/microsoft_outlook/actions/find-email/find-email.mjs (3 hunks)
  • components/microsoft_outlook/actions/update-contact/update-contact.mjs (1 hunks)

Walkthrough

Adds shared-folder support to the Microsoft Outlook integration: new app propDefinitions and methods for listing users, shared folders, and shared-folder messages; a new action to find emails in a shared folder; a new polling source (and test fixture) for new emails in shared folders; plus multiple version bumps, minor import reorderings, and a package version update.

Changes

Cohort / File(s) Summary
App: shared-folder APIs & propDefinitions
components/microsoft_outlook/microsoft_outlook.app.mjs
Added propDefinitions: userId, sharedFolderId, search, filter, orderBy; added methods: listUsers, listSharedFolders (recursive), listSharedFolderMessages; minor formatting in _makeRequest.
New action: Find Shared Folder Email
components/microsoft_outlook/actions/find-shared-folder-email/find-shared-folder-email.mjs
New action (v0.0.1) to list/search/filter/order messages in a specified user’s shared folder using pagination and maxResults.
New source + test event: New Email in Shared Folder
components/microsoft_outlook/sources/new-email-in-shared-folder/new-email-in-shared-folder.mjs, components/microsoft_outlook/sources/new-email-in-shared-folder/test-event.mjs
New polling source that paginates shared-folder messages, maintains a lastDate watermark, emits events oldest→newest, includes a sample test payload.
Find Email props update
components/microsoft_outlook/actions/find-email/find-email.mjs
Added search propDefinition; converted filter and orderBy to propDefinitions; run() left unchanged (new search not wired into request).
Import reorderings (no logic change)
components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs, .../create-draft-email/create-draft-email.mjs, .../download-attachment/download-attachment.mjs, .../send-email/send-email.mjs, components/microsoft_outlook/sources/new-email/new-email.mjs
Adjusted import ordering only.
Version bumps (actions/sources) + package version
components/microsoft_outlook/actions/* (multiple files), components/microsoft_outlook/sources/new-contact/new-contact.mjs, components/microsoft_outlook/sources/new-attachment-received/new-attachment-received.mjs, components/microsoft_outlook/package.json
Updated many exported version fields across actions/sources and bumped package version from 1.5.51.6.0.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Action as Find Shared Folder Email
  participant App as Microsoft Outlook App
  participant Graph as Microsoft Graph

  User->>Action: run(userId, sharedFolderId, $search/$filter/$orderby, maxResults)
  Action->>App: listSharedFolderMessages({ userId, sharedFolderId, $search, $filter, $orderby, paginate })
  App->>Graph: GET /users/{userId}/mailFolders/{sharedFolderId}/messages
  Graph-->>App: 200 OK (paged results)
  loop pages
    App-->>Action: messages[]
  end
  Action-->>User: collected emails + summary
Loading
sequenceDiagram
  autonumber
  participant Source as New Email in Shared Folder (Source)
  participant DB as Source DB
  participant App as Microsoft Outlook App
  participant Graph as Microsoft Graph

  Note left of Source: deploy()
  Source->>App: listSharedFolderMessages({ filter: createdDateTime gt lastDate, orderBy: createdDateTime desc, paginate, top })
  App->>Graph: GET .../messages?$filter=...&$orderby=...
  Graph-->>App: paged results
  App-->>Source: messages[]
  Source->>DB: set lastDate = newest.createdDateTime

  Note left of Source: run()
  Source->>DB: get lastDate
  Source->>App: listSharedFolderMessages with updated filter/order
  App->>Graph: GET messages (paged)
  Graph-->>App: results
  App-->>Source: messages[]
  loop emit oldest→newest
    Source-->>EventSink: emit({ id: conversationId, ts: createdDateTime, body: message })
  end
  Source->>DB: update lastDate
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Assessment against linked issues

Objective Addressed Explanation
App: Support accessing shared folders and messages (#18109)
Source: New emails in shared folders (#18109)
Action: Search emails in shared folders (#18109)

Assessment against linked issues: Out-of-scope changes

Code Change Explanation
Added search propDefinition in components/microsoft_outlook/actions/find-email/find-email.mjs (search prop) The new search prop is added but not passed into the action's run() request, so it does not implement searchable behavior for that action as expected by the objective.

Possibly related PRs

Suggested labels

User submitted

Suggested reviewers

  • michelle0927
  • lcaresia

Poem

I nibble at code with twitchy delight,
Shared folders found in the dusk and the light.
I hop through pages, one message, then two,
Emit and persist — a rabbit’s small coup.
Thump! Version bumped, the patch carrots chew.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 18109-microsoft-outlook

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (6)
components/microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs (1)

34-47: Guard against undefined categories and no-op when label absent

message?.categories can be undefined. labels.indexOf(...) will throw. Also, avoid sending undefined back to Graph.

Apply this diff:

-    let labels = message?.categories;
-
-    const index = labels.indexOf(this.label);
-    if (index > -1) {
-      labels.splice(index, 1);
-    }
+    const labels = Array.isArray(message?.categories)
+      ? [ ...message.categories ]
+      : [];
+    if (!labels.includes(this.label)) {
+      $.export("$summary", "Label not found on message. No changes made.");
+      return message;
+    }
+    const updatedCategories = labels.filter((l) => l !== this.label);
@@
-      data: {
-        categories: labels,
-      },
+      data: { categories: updatedCategories },
components/microsoft_outlook/microsoft_outlook.app.mjs (1)

268-281: Allow per-request header overrides (needed for $search)

_getHeaders ignores the headers argument from _makeRequest, making it impossible to set ConsistencyLevel: eventual for $search.

-    _getHeaders() {
-      return {
-        "Authorization": `Bearer ${this.$auth.oauth_access_token}`,
-        "accept": "application/json",
-        "Content-Type": "application/json",
-      };
-    },
+    _getHeaders(extra = {}) {
+      return {
+        "Authorization": `Bearer ${this.$auth.oauth_access_token}`,
+        "accept": "application/json",
+        "Content-Type": "application/json",
+        ...extra,
+      };
+    },
components/microsoft_outlook/actions/create-contact/create-contact.mjs (1)

49-55: Guard optional props to prevent runtime errors.

this.emailAddresses may be undefined and ...this.expand will throw if expand is undefined/null. Align with the pattern used elsewhere.

-        emailAddresses: this.emailAddresses.map((a, i) => ({
-          address: a,
-          name: `Email #${i + 1}`,
-        })),
+        emailAddresses: Array.isArray(this.emailAddresses)
+          ? this.emailAddresses.map((a, i) => ({
+              address: a,
+              name: `Email #${i + 1}`,
+            }))
+          : undefined,
         businessPhones: this.businessPhones,
-        ...this.expand,
+        ...(this.expand ?? {}),
components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs (1)

35-49: Handle messages without categories to avoid TypeError.

message?.categories can be undefined; includes and spread would throw.

-    const labels = message?.categories;
+    const labels = Array.isArray(message?.categories) ? message.categories : [];
components/microsoft_outlook/actions/download-attachment/download-attachment.mjs (1)

48-53: Avoid path traversal and unnecessary base64 conversions.

Current code allows ../ in filename to escape /tmp, and it round-trips through base64 unnecessarily.

-    const rawcontent = response.toString("base64");
-    const buffer = Buffer.from(rawcontent, "base64");
-    const downloadedFilepath = `/tmp/${this.filename}`;
-    fs.writeFileSync(downloadedFilepath, buffer);
-    const contentType = mime.lookup(downloadedFilepath);
+    const buffer = Buffer.isBuffer(response) ? response : Buffer.from(response);
+    const safeName = path.basename(this.filename || "attachment");
+    const baseDir = this.syncDir || "/tmp";
+    const downloadedFilepath = path.join(baseDir, safeName);
+    fs.writeFileSync(downloadedFilepath, buffer);
+    const contentType = mime.lookup(safeName) || "application/octet-stream";

Add required import at the top:

import path from "path";
components/microsoft_outlook/actions/find-email/find-email.mjs (1)

41-52: Ensure Graph $search queries include ConsistencyLevel: eventual header
listMessages in components/microsoft_outlook/microsoft_outlook.app.mjs currently forwards params without setting the required header. Add logic to merge or inject ConsistencyLevel: eventual (for example, extend _getHeaders to accept and merge custom headers when params.$search is present).

🧹 Nitpick comments (9)
components/microsoft_outlook/actions/approve-workflow/approve-workflow.mjs (1)

30-35: Avoid spreading the entire component instance into the message body.
Limit props passed to the message to just what’s needed to prevent leaking unrelated props and reduce coupling.

Apply:

-    const opts = {
-      content: `Click here to approve the workflow: ${resume_url}, \nand cancel here: ${cancel_url}`,
-      ccRecipients: [],
-      bccRecipients: [],
-      ...this,
-    };
+    const opts = {
+      content: `Click here to approve the workflow: ${resume_url}, \nand cancel here: ${cancel_url}`,
+      recipients: this.recipients,
+      subject: this.subject,
+      ccRecipients: [],
+      bccRecipients: [],
+    };
components/microsoft_outlook/actions/reply-to-email/reply-to-email.mjs (1)

70-72: Validate usage of expand.
If expand is intended for Graph’s $expand query param, it shouldn’t be spread into the message body. Ensure replyToEmail handles it as a query option instead.

components/microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs (1)

18-25: Prop naming/type consistency for folder selection.
You reference propDefinition: ["folderIds"] but expose a single folderId string. Confirm the underlying prop returns a single ID, or rename/adjust for clarity.

components/microsoft_outlook/microsoft_outlook.app.mjs (2)

208-230: Shared folder options: avoid deep recursive fan-out and encode IDs

Current recursion can explode requests and ignores URL encoding. Suggest limiting recursion for options and encoding IDs in the method it calls.

-      async options({
-        userId, page,
-      }) {
-        const sharedFolders = await this.listSharedFolders({
-          userId,
-          params: {
-            $top: DEFAULT_LIMIT,
-            $skip: DEFAULT_LIMIT * page,
-          },
-        });
-
-        return sharedFolders?.map(({
-          id: value, displayName,
-        }) => ({
-          value,
-          label: displayName,
-        })) || [];
-      },
+      async options({ userId, page }) {
+        const limit = DEFAULT_LIMIT;
+        const sharedFolders = await this.listSharedFolders({
+          userId,
+          // Only page the current level to keep options responsive
+          params: { $top: limit, $skip: limit * page },
+        });
+        return sharedFolders?.map((f) => ({
+          value: f.id,
+          label: f.displayName || f.id,
+        })) || [];
+      },

239-255: Doc quality nit: clarify examples for search/filter/order

Minor wording refinements improve UX; current behavior unchanged.

If desired, I can submit a small copy edit PR across these descriptions for consistency.

components/microsoft_outlook/actions/update-contact/update-contact.mjs (1)

64-65: Parse/guard expand to avoid spreading non-objects.

Use the same parseObject pattern used in send-email to safely handle JSON strings and undefined.

-        ...this.expand,
+        ...parseObject(this.expand),

Additional import required at the top of the file:

import { parseObject } from "../../common/utils.mjs";
components/microsoft_outlook/sources/new-email-in-shared-folder/new-email-in-shared-folder.mjs (3)

59-66: Advance the cursor based on the max timestamp, not array position.

Coupling watermarking to result order is brittle (especially if ordering fails). Compute the newest timestamp, then emit oldest→newest.

       let responseArray = [];
 
       for await (const item of items) {
         responseArray.push(item);
       }
-      if (responseArray.length) this._setLastDate(responseArray[0].createdDateTime);
-
-      for (const item of responseArray.reverse()) {
+      if (responseArray.length) {
+        const newest = responseArray.reduce(
+          (max, { createdDateTime }) => createdDateTime > max ? createdDateTime : max,
+          lastDate,
+        );
+        this._setLastDate(newest);
+      }
+
+      responseArray.sort((a, b) =>
+        new Date(a.createdDateTime) - new Date(b.createdDateTime));
+      for (const item of responseArray) {

50-52: Prefer receivedDateTime for email polling semantics.

For “new email” signals, receivedDateTime is typically the more accurate field to filter/order/emit by.

-            "$orderby": "createdDateTime desc",
-            "$filter": `createdDateTime gt ${lastDate}`,
+            "$orderby": "receivedDateTime desc",
+            "$filter": `receivedDateTime gt ${lastDate}`,
-      if (responseArray.length) {
-        const newest = responseArray.reduce(
-          (max, { createdDateTime }) => createdDateTime > max ? createdDateTime : max,
+      if (responseArray.length) {
+        const newest = responseArray.reduce(
+          (max, { receivedDateTime }) => receivedDateTime > max ? receivedDateTime : max,
           lastDate,
         );
         this._setLastDate(newest);
       }
 
-      responseArray.sort((a, b) =>
-        new Date(a.createdDateTime) - new Date(b.createdDateTime));
+      responseArray.sort((a, b) =>
+        new Date(a.receivedDateTime) - new Date(b.receivedDateTime));
-          ts: item.createdDateTime,
+          ts: item.receivedDateTime,

Also applies to: 64-64, 72-72


8-8: Tighten description wording.

It selects a single folder; use singular.

-  description: "Emit new event when an email is received in specified shared folders.",
+  description: "Emit an event when an email is received in the specified shared folder.",
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between ea4b419 and 0c8c1d4.

📒 Files selected for processing (22)
  • components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/approve-workflow/approve-workflow.mjs (1 hunks)
  • components/microsoft_outlook/actions/create-contact/create-contact.mjs (1 hunks)
  • components/microsoft_outlook/actions/create-draft-email/create-draft-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/download-attachment/download-attachment.mjs (1 hunks)
  • components/microsoft_outlook/actions/find-contacts/find-contacts.mjs (1 hunks)
  • components/microsoft_outlook/actions/find-email/find-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/find-shared-folder-email/find-shared-folder-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/list-contacts/list-contacts.mjs (1 hunks)
  • components/microsoft_outlook/actions/list-folders/list-folders.mjs (1 hunks)
  • components/microsoft_outlook/actions/list-labels/list-labels.mjs (1 hunks)
  • components/microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs (1 hunks)
  • components/microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/reply-to-email/reply-to-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/send-email/send-email.mjs (1 hunks)
  • components/microsoft_outlook/actions/update-contact/update-contact.mjs (1 hunks)
  • components/microsoft_outlook/microsoft_outlook.app.mjs (4 hunks)
  • components/microsoft_outlook/package.json (1 hunks)
  • components/microsoft_outlook/sources/new-contact/new-contact.mjs (1 hunks)
  • components/microsoft_outlook/sources/new-email-in-shared-folder/new-email-in-shared-folder.mjs (1 hunks)
  • components/microsoft_outlook/sources/new-email-in-shared-folder/test-event.mjs (1 hunks)
  • components/microsoft_outlook/sources/new-email/new-email.mjs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (3)
components/microsoft_outlook/actions/find-shared-folder-email/find-shared-folder-email.mjs (2)
components/microsoft_outlook/actions/find-email/find-email.mjs (2)
  • items (42-52)
  • emails (54-54)
components/microsoft_outlook/sources/new-email-in-shared-folder/new-email-in-shared-folder.mjs (1)
  • items (46-57)
components/microsoft_outlook/sources/new-email-in-shared-folder/new-email-in-shared-folder.mjs (1)
components/microsoft_outlook/actions/find-shared-folder-email/find-shared-folder-email.mjs (1)
  • items (57-70)
components/microsoft_outlook/microsoft_outlook.app.mjs (1)
components/reddit/reddit.app.mjs (1)
  • displayName (461-464)
🪛 Gitleaks (8.27.2)
components/microsoft_outlook/sources/new-email-in-shared-folder/test-event.mjs

7-7: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.

(generic-api-key)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Lint Code Base
  • GitHub Check: pnpm publish
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (25)
components/microsoft_outlook/package.json (1)

3-3: Version bump looks appropriate for new features.

Minor bump from 1.5.x to 1.6.0 matches the added shared-folder capabilities in this release. Ensure CHANGELOG and release notes reflect the new action/source.

components/microsoft_outlook/actions/list-folders/list-folders.mjs (1)

7-7: Version increment only — OK.

No functional changes; version bump to 0.0.7 aligns with the package release.

components/microsoft_outlook/sources/new-email/new-email.mjs (1)

2-2: Import reordering — no behavioral impact.

Order change is harmless. Confirm it satisfies your eslint/import-order rules to avoid churn in future diffs.

components/microsoft_outlook/actions/list-contacts/list-contacts.mjs (1)

6-6: Action version bump acknowledged.

No logic changes; version 0.0.16 is fine and consistent with other action bumps.

components/microsoft_outlook/actions/find-contacts/find-contacts.mjs (1)

6-6: Action version bump acknowledged.

No functional modifications detected; 0.0.16 aligns with the release set.

components/microsoft_outlook/actions/approve-workflow/approve-workflow.mjs (1)

7-7: Version bump only — LGTM.

components/microsoft_outlook/sources/new-contact/new-contact.mjs (2)

8-8: Version bump only — LGTM.


45-55: No recursion: run correctly delegates to common.methods.run
common.methods.run is defined in components/microsoft_outlook/sources/common/common.mjs and is invoked via this.run(...), so there’s no self-recursion risk.

components/microsoft_outlook/actions/reply-to-email/reply-to-email.mjs (1)

7-7: Version bump only — LGTM.

components/microsoft_outlook/actions/list-labels/list-labels.mjs (1)

7-7: Version bump only — LGTM.

components/microsoft_outlook/actions/move-email-to-folder/move-email-to-folder.mjs (1)

7-7: Version bump only — LGTM.

components/microsoft_outlook/actions/create-draft-email/create-draft-email.mjs (2)

2-2: Import reorder is fine

No functional impact.


7-7: Version bump LGTM

No compatibility concerns from this change alone.

components/microsoft_outlook/actions/remove-label-from-email/remove-label-from-email.mjs (1)

7-7: Version bump LGTM

Matches the PR-wide versioning pattern.

components/microsoft_outlook/microsoft_outlook.app.mjs (1)

455-463: Verify required Graph OAuth scopes for shared folder operations
Confirm that your app’s OAuth configuration grants delegated Mail.Read.Shared or application Mail.Read (+ directory scopes) for the new listSharedFolderMessages (and related) actions—missing scopes will cause 403s.

components/microsoft_outlook/actions/create-contact/create-contact.mjs (1)

6-6: Version bump looks good.

No behavioral change introduced.

components/microsoft_outlook/actions/update-contact/update-contact.mjs (1)

6-6: Version bump looks good.

No functional changes.

components/microsoft_outlook/actions/add-label-to-email/add-label-to-email.mjs (2)

2-2: Import reorder is fine.

No side effects expected.


8-8: Version bump looks good.

Public metadata only.

components/microsoft_outlook/actions/download-attachment/download-attachment.mjs (2)

3-3: Import position change is fine.

No behavior change.


9-9: Version bump looks good.

No functional changes.

components/microsoft_outlook/actions/send-email/send-email.mjs (2)

2-2: Import reorder looks fine.

No observed side effects.


7-7: Version bump looks good.

Public metadata only.

components/microsoft_outlook/actions/find-email/find-email.mjs (1)

22-33: PropDefinition migration LGTM.

Switching filter/orderBy to shared propDefinitions improves consistency across actions.

components/microsoft_outlook/actions/find-shared-folder-email/find-shared-folder-email.mjs (1)

56-70: LGTM on shared-folder query wiring.

Correctly forwards userId, sharedFolderId, and $search/$filter/$orderby to listSharedFolderMessages.

Copy link
Collaborator

@jcortes jcortes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @luancazarine lgtm! Ready for QA!

@vunguyenhung vunguyenhung merged commit 79b4fdf into master Sep 6, 2025
10 checks passed
@vunguyenhung vunguyenhung deleted the 18109-microsoft-outlook branch September 6, 2025 08:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Microsoft Outlook

3 participants