dwindown
26eb7cb898
feat: Implement push notification settings backend and UI
...
## ✅ Push Notification Settings - Fully Functional
### Backend (PHP)
**PushNotificationHandler Updates:**
- Added `SETTINGS_KEY` constant
- `ensure_default_settings()` - Initialize defaults
- `get_default_settings()` - Return default config
- `get_settings()` - Fetch current settings
- `update_settings()` - Save settings
**Default Settings:**
```php
[
'use_logo' => true,
'use_product_images' => true,
'use_gravatar' => false,
'click_action' => '/wp-admin/admin.php?page=woonoow#/orders',
'require_interaction' => false,
'silent' => false,
]
```
**NotificationsController:**
- `GET /notifications/push/settings` - Fetch settings
- `POST /notifications/push/settings` - Update settings
- Permission-protected endpoints
### Frontend (React)
**ChannelConfig Component:**
- Fetches push settings on open
- Real-time state management
- Connected switches and inputs
- Save mutation with loading state
- Toast notifications for success/error
- Disabled state during save
**Settings Available:**
1. **Branding**
- Use Store Logo
- Use Product Images
- Use Customer Gravatar
2. **Behavior**
- Click Action URL (input)
- Require Interaction
- Silent Notifications
### Features
✅ **Backend Storage** - Settings saved in wp_options
✅ **REST API** - GET and POST endpoints
✅ **Frontend UI** - Full CRUD interface
✅ **State Management** - React Query integration
✅ **Loading States** - Skeleton and button states
✅ **Error Handling** - Toast notifications
✅ **Default Values** - Sensible defaults
---
**Next: Email channel toggle** 📧
2025-11-11 15:15:02 +07:00
dwindown
63dbed757a
fix: Polish notification UI - mobile, colors, and layout
...
## ✅ All UI Improvements
### 1. Contextual Header
- Added contextual header to Notifications page
- Consistent with Payments and Shipping pages
- Saves vertical space
### 2. Mobile View Improvements
**Channels Page:**
- Responsive flex-col on mobile, flex-row on desktop
- Full-width buttons on mobile
- Better spacing and alignment
- Push subscription toggle in bordered container on mobile
**Templates Accordion:**
- Better mobile layout
- Badges wrap properly
- Icon and title alignment improved
- Responsive padding
### 3. Active State Colors
- **Green color for active channels** (consistent with Payments)
- `bg-green-500/20 text-green-600` for active
- `bg-muted text-muted-foreground` for inactive
- Applied to:
- Events page channel icons
- Channels page channel icons
- Active badges
### 4. Badge Layout
- Badges moved under title on mobile
- Better visual hierarchy
- Title → Badges → Description flow
- Proper spacing between elements
### 5. Template Variables Card Removed
- Variables already in template editor modal
- Click-to-insert functionality
- No need for separate reference card
- Cleaner page layout
### 6. Accordion Polish
- Better padding and spacing
- Responsive layout
- Icon stays visible
- Badges wrap on small screens
---
**Next: Email toggle and push settings backend** 🎯
2025-11-11 14:51:42 +07:00
dwindown
200245491f
fix: Perfect notification system UX improvements
...
## 🎯 All 5 Issues Fixed
### Issue 1: Channel toggles work independently ✅
- Each channel toggle works independently
- No automatic disabling of other channels
- Backend already handles this correctly
### Issue 2: Push subscription state fixed ✅
- Added proper VAPID key conversion (urlBase64ToUint8Array)
- Better service worker registration handling
- Improved error logging
- State updates correctly after subscription
### Issue 3: Removed Push from addon discovery ✅
- Push Notifications removed from "Extend with Addons" section
- Only shows WhatsApp, Telegram, and SMS
- Push is clearly shown as built-in channel
### Issue 4: Templates page now uses accordion ✅
- Collapsed by default to save space
- Shows template count per channel
- Shows custom template count badge
- Expands on click to show all templates
- Much more scalable for 5+ channels
### Issue 5: Configure button opens channel-specific settings ✅
- **Email**: Redirects to WooCommerce email settings
- SMTP configuration
- Email templates
- Sender settings
- **Push Notifications**: Custom configuration dialog
- Branding options (logo, product images, gravatar)
- Behavior settings (click action, require interaction, silent)
- Visual configuration UI
- **Addon Channels**: Generic configuration dialog
- Ready for addon-specific settings
## New Components
**ChannelConfig.tsx** - Smart configuration dialog:
- Detects channel type
- Email → WooCommerce redirect
- Push → Custom settings UI
- Addons → Extensible placeholder
## UI Improvements
**Templates Page:**
- Accordion with channel icons
- Badge showing total templates
- Badge showing custom count
- Cleaner, more compact layout
**Channels Page:**
- Configure button for all channels
- Push subscription toggle
- Better state management
- Channel-specific configuration
---
**All UX issues resolved!** 🎉
2025-11-11 14:22:12 +07:00
dwindown
b90aee8693
feat: Add push notification subscription UI to Channels page
...
## ✅ Push Notification UI Complete
### Frontend Updates
**Channels Page** - Added push notification management:
- Check browser push notification support
- Subscribe/unsubscribe toggle switch
- Permission request handling
- VAPID key integration
- Subscription state management
- Real-time subscription status
- "Not Supported" badge for unsupported browsers
### Features
✅ **Browser Push Support Detection**
- Checks for Notification API
- Checks for Service Worker API
- Checks for Push Manager API
- Shows "Not Supported" if unavailable
✅ **Subscription Management**
- Toggle switch to enable/disable
- Request notification permission
- Fetch VAPID public key from server
- Subscribe to push manager
- Send subscription to backend
- Unsubscribe functionality
- Persistent subscription state
✅ **User Experience**
- Clear subscription status (Subscribed/Not subscribed)
- Toast notifications for success/error
- Disabled state during operations
- Smooth toggle interaction
### Ready For
1. ✅ Service worker implementation
2. ✅ Test push notifications
3. ✅ PWA manifest integration
4. ✅ Real notification sending
---
**All notification features implemented!** 🎉
2025-11-11 13:31:58 +07:00
dwindown
97e76a837b
feat: Add template editor and push notifications infrastructure
...
## ✅ Template Editor + Push Notifications
### Backend (PHP)
**1. TemplateProvider** (`includes/Core/Notifications/TemplateProvider.php`)
- Manages notification templates in wp_options
- Default templates for all events x channels
- Variable system (order, product, customer, store)
- Template CRUD operations
- Variable replacement engine
**2. PushNotificationHandler** (`includes/Core/Notifications/PushNotificationHandler.php`)
- VAPID keys generation and storage
- Push subscription management
- Queue system for push notifications
- User-specific subscriptions
- Service worker integration ready
**3. NotificationsController** - Extended with:
- GET /notifications/templates - List all templates
- GET /notifications/templates/:eventId/:channelId - Get template
- POST /notifications/templates - Save template
- DELETE /notifications/templates/:eventId/:channelId - Reset to default
- GET /notifications/push/vapid-key - Get VAPID public key
- POST /notifications/push/subscribe - Subscribe to push
- POST /notifications/push/unsubscribe - Unsubscribe
**4. Push channel added to built-in channels**
### Frontend (React)
**1. TemplateEditor Component** (`TemplateEditor.tsx`)
- Modal dialog for editing templates
- Subject + Body text editors
- Variable insertion with dropdown
- Click-to-insert variables
- Live preview
- Save and reset to default
- Per event + channel customization
**2. Templates Page** - Completely rewritten:
- Lists all events x channels
- Shows "Custom" badge for customized templates
- Edit button opens template editor
- Fetches templates from API
- Variable reference guide
- Organized by channel
### Key Features
✅ **Simple Text Editor** (not HTML builder)
- Subject line
- Body text with variables
- Variable picker
- Preview mode
✅ **Variable System**
- Order variables: {order_number}, {order_total}, etc.
- Customer variables: {customer_name}, {customer_email}, etc.
- Product variables: {product_name}, {stock_quantity}, etc.
- Store variables: {store_name}, {store_url}, etc.
- Click to insert at cursor position
✅ **Push Notifications Ready**
- VAPID key generation
- Subscription management
- Queue system
- PWA integration ready
- Built-in channel (alongside email)
✅ **Template Management**
- Default templates for all events
- Per-event, per-channel customization
- Reset to default functionality
- Custom badge indicator
### Default Templates Included
**Email:**
- Order Placed, Processing, Completed, Cancelled, Refunded
- Low Stock, Out of Stock
- New Customer, Customer Note
**Push:**
- Order Placed, Processing, Completed
- Low Stock Alert
### Next Steps
1. ✅ Service worker for push notifications
2. ✅ Push subscription UI in Channels page
3. ✅ Test push notifications
4. ✅ Addon integration examples
---
**Ready for testing!** 🚀
2025-11-11 13:09:33 +07:00
dwindown
ffdc7aae5f
feat: Implement notification system with 3 subpages (Events, Channels, Templates)
...
## ✅ Correct Implementation Following NOTIFICATION_STRATEGY.md
### Frontend (React) - 3 Subpages
**1. Main Notifications Page** (`Notifications.tsx`)
- Tab navigation for 3 sections
- Events | Channels | Templates
**2. Events Subpage** (`Notifications/Events.tsx`)
- Configure which channels per event
- Grouped by category (Orders, Products, Customers)
- Toggle channels (Email, WhatsApp, Telegram, etc.)
- Show recipient (Admin/Customer/Both)
- Switch UI for enable/disable per channel
**3. Channels Subpage** (`Notifications/Channels.tsx`)
- List available channels
- Built-in channels (Email)
- Addon channels (WhatsApp, Telegram, SMS, Push)
- Channel status (Active/Inactive)
- Configure button for each channel
- Addon discovery cards
**4. Templates Subpage** (`Notifications/Templates.tsx`)
- Email templates (link to WooCommerce)
- Addon channel templates
- Template variables reference
- Preview and edit buttons
- Variable documentation ({order_number}, {customer_name}, etc.)
### Backend (PHP) - Bridge to WooCommerce
**NotificationsController** (`includes/Api/NotificationsController.php`)
- Bridges to WooCommerce email system
- Does NOT reinvent notification system
- Provides addon integration hooks
**REST API Endpoints:**
```
GET /notifications/channels - List channels (email + addons)
GET /notifications/events - List events (maps to WC emails)
POST /notifications/events/update - Update event channel settings
```
**Key Features:**
✅ Leverages WooCommerce emails (not reinventing)
✅ Stores settings in wp_options
✅ Provides hooks for addons:
- `woonoow_notification_channels` filter
- `woonoow_notification_events` filter
- `woonoow_notification_event_updated` action
### Addon Integration
**Example: WhatsApp Addon**
```php
// Register channel
add_filter("woonoow_notification_channels", function($channels) {
$channels[] = [
"id" => "whatsapp",
"label" => "WhatsApp",
"icon" => "message-circle",
"enabled" => true,
"addon" => "woonoow-whatsapp",
];
return $channels;
});
// React to event updates
add_action("woonoow_notification_event_updated", function($event_id, $channel_id, $enabled, $recipient) {
if ($channel_id === "whatsapp" && $enabled) {
// Setup WhatsApp notification for this event
}
}, 10, 4);
// Hook into WooCommerce email triggers
add_action("woocommerce_order_status_processing", function($order_id) {
// Send WhatsApp notification
}, 10, 1);
```
### Architecture
**NOT a new notification system** ✅
- Uses WooCommerce email infrastructure
- Maps events to WC email IDs
- Addons hook into WC triggers
**IS an extensible framework** ✅
- Unified UI for all channels
- Per-event channel configuration
- Template management
- Addon discovery
### Files Created
- `Notifications.tsx` - Main page with tabs
- `Notifications/Events.tsx` - Events configuration
- `Notifications/Channels.tsx` - Channel management
- `Notifications/Templates.tsx` - Template editor
- `NotificationsController.php` - REST API bridge
### Files Modified
- `Routes.php` - Register NotificationsController
---
**Ready for addon development!** 🚀
Next: Build Telegram addon as proof of concept
2025-11-11 12:31:13 +07:00