From c0faa4420cdeb6529c9d4f7be032909dcc4d4265 Mon Sep 17 00:00:00 2001 From: Nick Barraclough <66260480+nbarraclough@users.noreply.github.com> Date: Thu, 18 Dec 2025 12:47:13 -0700 Subject: [PATCH] some basic changes to demo @nylas/connect - cleaned up styling - button on the homepage to click - takes you through connect auth (just uses Nylas Applets (US) app) - returns access token, grant id, etc after auth --- package.json | 3 +- packages/nylas-connect/app.js | 104 ++++++++++++++++++++ packages/nylas-connect/auth-instance.js | 4 +- packages/nylas-connect/index.html | 35 +++---- packages/nylas-connect/package.json | 4 +- packages/nylas-connect/styles.css | 124 ++++++++++++++++++++++++ packages/react/package.json | 4 +- pnpm-lock.yaml | 3 + 8 files changed, 253 insertions(+), 28 deletions(-) create mode 100644 packages/nylas-connect/app.js create mode 100644 packages/nylas-connect/styles.css diff --git a/package.json b/package.json index 2b975b0..e33d3ea 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "husky": "^8.0.3", "nx": "21.5.2", "oxlint": "^1.16.0", - "prettier": "^3.4.2" + "prettier": "^3.4.2", + "typescript": "^5.3.3" } } diff --git a/packages/nylas-connect/app.js b/packages/nylas-connect/app.js new file mode 100644 index 0000000..78b2041 --- /dev/null +++ b/packages/nylas-connect/app.js @@ -0,0 +1,104 @@ +import { auth } from "./auth-instance.js"; + +const connectButton = document.getElementById("connectButton"); +const resultContainer = document.getElementById("resultContainer"); +const resultContent = document.getElementById("resultContent"); + +connectButton.addEventListener("click", async () => { + // Disable button and show loading state + connectButton.disabled = true; + connectButton.textContent = "Connecting..."; + resultContainer.classList.remove("show"); + resultContent.innerHTML = + '
Opening authentication window...
'; + + try { + const result = await auth.connect({ method: "popup" }); + + // Display the result + displayResult(result); + } catch (error) { + // Display error + displayError(error); + } finally { + // Re-enable button + connectButton.disabled = false; + connectButton.textContent = "Connect your inbox"; + } +}); + +function displayResult(result) { + const expiresAt = new Date(result.expiresAt); + const expiresIn = Math.floor((result.expiresAt - Date.now()) / 1000 / 60); + + let html = '✓ Authentication Successful'; + html += "+ Click the button below to connect your inbox using Nylas Hosted Auth. +
+ +