reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

reafctor: corrigindo shop - #287

Merged
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial
Dec 2, 2025
Merged

reafctor: corrigindo shop#287
rbxyz merged 1 commit into
mainfrom
282-vincular-novo-email-empresarial

Conversation

@rbxyz

@rbxyzrbxyz commented Dec 2, 2025

Copy link
Copy Markdown
Collaborator

Summary by CodeRabbit

Release Notes

  • New Features

    • Added refresh button to shop page header for quickly reloading orders and product data.
    • Added unread chat notification badges on order cards to display pending messages from support.
  • Improvements

    • Updated payment method selection placeholder text for clearer guidance during checkout.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel

vercelBot commented Dec 2, 2025

Copy link
Copy Markdown

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

ProjectDeploymentPreviewCommentsUpdated (UTC)
eloReadyReadyPreviewCommentDec 2, 2025 5:11pm

@rbxyz
rbxyz merged commit 2129f03 into mainDec 2, 2025
5 of 6 checks passed
@coderabbitai

coderabbitaiBot commented Dec 2, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

The changes add chat notification tracking to the shop interface and introduce a manual refresh capability. A new server procedure counts unread chat notifications per order; the orders list component displays unread badges, auto-marks messages as read when chat opens, and refetches counts. The shop page adds a refresh button that manually invalidates and refetches product and order queries.

Changes

Cohort / File(s)Summary
Chat Notification Infrastructure
src/server/api/routers/product-order.ts, src/components/shop/my-orders-list.tsx
Added countChatNotifications router procedure to count unread notifications for orders; OrderCard now fetches unread chat count, displays badge, and auto-marks messages as read when chat opens via mutation and query invalidation.
Shop Page Refresh
src/app/(authenticated)/shop/page.tsx
Imported RefreshCw icon; added utils hook and handleRefresh function to invalidate and refetch product and order queries; added Refresh button in header (non-print view).
Payment Method UI
src/components/shop/create-order-modal.tsx
Changed payment method select placeholder to always display "Selecione a forma de pagamento" regardless of total amount (previously defaulted to "PIX" for totals below 200).

Sequence Diagram(s)

sequenceDiagram
participant User
participant UI as OrderCard (UI)
participant API as productOrder API
participant DB as Database
rect rgb(200, 220, 240)
Note over User,DB: Chat Notification Flow
User->>UI: Opens chat (showChat = true)
UI->>API: countChatNotifications(orderId)
API->>DB: Query unread count<br/>(entityType: chat, orderId)
DB-->>API: unreadCount
API-->>UI: unreadCount
alt unreadCount > 0
UI->>API: markChatNotificationsAsRead(orderId)
API->>DB: Update notifications to read
DB-->>API: Success
UI->>API: Invalidate countChatNotifications query
API-->>UI: Query cache cleared
UI->>API: Refetch countChatNotifications
API->>DB: Query unread count (now 0)
DB-->>API: 0
API-->>UI: Display updated badge
end
end
rect rgb(240, 200, 220)
Note over User,DB: Shop Refresh Flow
User->>UI: Clicks Refresh button
UI->>API: Invalidate productOrder.listMyOrders
UI->>API: Invalidate productOrder.countUnread
UI->>API: Invalidate product.getAll
UI->>API: Refetch listMyOrders
API->>DB: Query updated orders
DB-->>API: Orders data
API-->>UI: Update orders display
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • src/components/shop/my-orders-list.tsx: Requires careful review of chat notification logic, useEffect dependencies, mutation callback sequencing, and badge rendering conditions.
  • src/server/api/routers/product-order.ts: New procedure needs validation against existing chat notification schema and query correctness.
  • src/app/(authenticated)/shop/page.tsx: Verify invalidation order, refetch logic, and print-view button visibility conditional.
  • src/components/shop/create-order-modal.tsx: Confirm placeholder change doesn't break existing workflows or user expectations.

Possibly related PRs

Poem

🐰 A refresh button hops with glee,
Chat badges bloom where none could see,
Notifications marked, counts all clear,
The shop page dances, fresh and near!
—Rabbit's cheer for queries reborn 🔄

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 282-vincular-novo-email-empresarial

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 97e1af4 and 31d271d.

📒 Files selected for processing (4)
  • src/app/(authenticated)/shop/page.tsx (3 hunks)
  • src/components/shop/create-order-modal.tsx (1 hunks)
  • src/components/shop/my-orders-list.tsx (3 hunks)
  • src/server/api/routers/product-order.ts (1 hunks)

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

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for freeto 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.

1 participant

@rbxyz