- Added conditional rendering in SubscriptionInfoBar and LinksCard to hide components for users with the Client role.
- Updated ProfileDataCard to use Enum_Customer_Role for role management.
- Improved error handling in OrdersService to differentiate between master and client order limit errors.
- Updated the `addContact` function to allow all users to add contacts, removing the previous restriction that only masters could do so.
- Deleted the `become-master` feature and related utility functions, streamlining the codebase.
- Adjusted command settings to reflect the removal of the master role functionality.
- Refactored components and hooks to eliminate dependencies on the master role, enhancing user experience and simplifying logic.
- Introduced the MasterServicesList component to show services associated with a master profile.
- Updated ProfilePage to conditionally render MasterServicesList based on user role.
- Refactored services fetching logic into a new useMasterServices hook for better reusability.
- Updated gradient backgrounds in ProPage and SubscriptionInfoBar to support dark mode variations.
- Refactored class names for better conditional styling based on subscription activity.
- Improved text color handling for better readability in both active and inactive states.
- Implemented `createTrialSubscription` action in the API for initiating trial subscriptions.
- Enhanced the Pro page to include a `TryFreeButton` for users to activate their trial.
- Updated GraphQL operations and types to support trial subscription features.
- Improved subscription messaging and user experience across relevant components.
- Introduced BOT_URL to the environment schema for enhanced configuration management.
- Updated turbo.json to include BOT_URL in the environment variables list.
- Modified subscription-bar.tsx to improve user messaging for subscription availability.
- Integrated `SubscriptionInfoBar` component into the profile page for displaying subscription details.
- Updated GraphQL types to include subscription-related fields and filters.
- Enhanced the profile data management by adding subscription handling capabilities.
- Added a new utility function `getRemainingDays` to calculate remaining days until a specified date.
* feat(profile): implement local hooks for profile and service data editing
- Added `useProfileEdit` and `useServiceEdit` hooks to manage pending changes and save functionality for profile and service data cards.
- Updated `ProfileDataCard` and `ServiceDataCard` components to utilize these hooks, enhancing user experience with save and cancel options.
- Introduced buttons for saving and canceling changes, improving the overall interactivity of the forms.
- Refactored input handling to use `updateField` for better state management.
* feat(bot): integrate Redis and update bot configuration
- Added Redis service to both docker-compose files for local development and production environments.
- Updated bot configuration to utilize the Grammy framework, replacing Telegraf.
- Implemented graceful shutdown for the bot, ensuring proper resource management.
- Refactored bot commands and removed deprecated message handling logic.
- Enhanced environment variable management for Redis connection settings.
- Updated dependencies in package.json to include new Grammy-related packages.
* fix(registration): improve error handling for customer creation
- Updated error handling in the registration feature to return a generic error message when documentId is not present, enhancing user experience by providing clearer feedback.
* feat(bot): add unhandled command message and integrate unhandled feature
- Introduced a new message for unhandled commands in Russian localization to improve user feedback.
- Integrated the unhandled feature into the bot's middleware for better command handling.
* feat(locales): update Russian localization with additional contact information
- Enhanced the short description in the Russian localization file to include a contact note for user inquiries, improving user support accessibility.
* feat(help): enhance help command with support information
- Updated the help command to include a support message in the Russian localization, providing users with a contact point for inquiries.
- Improved the command response by combining the list of available commands with the new support information, enhancing user experience.
* fix(orders): update default sorting order for orders
- Changed the default sorting order for orders from 'datetime_start:asc' to 'datetime_start:desc' to ensure the most recent orders are displayed first, improving the user experience in order management.
* refactor(orders): remove ClientsOrdersList and streamline OrdersList component
- Eliminated the ClientsOrdersList component to simplify the orders page structure.
- Updated OrdersList to handle both client and master views, enhancing code reusability.
- Improved order fetching logic and UI rendering for better performance and user experience.
* fix(order-form): hide next button on success & error pages
* refactor(bot): streamline bot middleware and improve key generator function
- Removed unused session middleware and sequentialize function from the bot's error boundary.
- Simplified the key generator function for rate limiting by condensing its implementation.
- Enhanced overall code clarity and maintainability in the bot's configuration.
* feat(customer): implement banned customer check and enhance customer data handling
- Added `isCustomerBanned` function to determine if a customer is banned based on the `bannedUntil` field.
- Updated the `BaseService` to throw an error if a banned customer attempts to access certain functionalities.
- Enhanced the GraphQL operations to include the `bannedUntil` field in customer queries and mutations, improving data integrity and user experience.
- Integrated the `CheckBanned` component in the layout to manage banned customer states effectively.
* feat(ban-system): implement multi-level user ban checks across services
- Added a comprehensive ban checking system to prevent access for banned users at multiple levels, including database, API, and client-side.
- Introduced `bannedUntil` field in the customer model to manage temporary and permanent bans effectively.
- Enhanced `BaseService` and various service classes to include ban checks, ensuring that banned users cannot perform actions or access data.
- Updated error handling to provide consistent feedback for banned users across the application.
- Improved user experience with a dedicated ban check component and a user-friendly ban notification page.
* packages(apps/web): upgrade next@15.5.0
- Introduced a `min` prop to the NumberField component to enforce minimum value constraints.
- Updated ServiceDataCard to set the minimum price to 0, enhancing input validation for service pricing.
- Introduced NumberField for price input and TextareaField for service description in the ServiceDataCard component.
- Updated ServiceCard component to display the new description and price fields, enhancing service details visibility.
- Added formatMoney utility for consistent currency formatting across the application.
- Updated GraphQL fragments and types to include price and description fields for services.
* feat(profile): add 'Услуги' link button to LinksCard for service management
* feat(services): add create and update service functionalities with corresponding API actions and hooks
* chore(docker): add healthcheck to service in docker-compose.yml and update deploy workflow to include docker compose down
* refactor(orders): add useOrdersInfiniteQuery for improved pagination and add load more button in orders list components
* refactor(graphql): remove NotifyService and related notification logic from orders and API, clean up unused dependencies
* refactor(api): streamline customer, order, service, and slot actions by wrapping server functions with client action utility to rethrow error messages to client
* refactor(profile): comment out change role feature
* refactor(orders): update OrderServices and ServiceSelect components to utilize ServiceCard, and enhance service fields with duration in GraphQL types
* refactor(schedule): implement forbidden order states to disable editing slots with active orders
* fix(deploy): update SSH configuration to use dynamic port from secrets for improved flexibility
* refactor(api/orders): simplify order creation logic by removing unnecessary validations and improving error handling
* refactor(contact-row): replace role display logic with useIsMaster hook for improved clarity
* refactor(profile/orders-list): update header text from "Общие записи" to "Недавние записи" for better clarity
gql: GetOrders add sort slot.date:desc
* refactor(profile/orders-list): enhance OrderCard component by adding avatarSource prop based on user role
* feat(order-form): implement date selection with event highlighting and monthly view for available time slots
* refactor(i18n/config): update timeZone from 'Europe/Amsterdam' to 'Europe/Moscow'
* refactor(order-form/datetime-select): enhance date selection logic to include slot availability check
* refactor(datetime-format): integrate dayjs timezone support with default Moscow timezone for date and time formatting
* fix(contact-row): replace useIsMaster hook with isCustomerMaster utility for role display logic
* refactor(service-card): replace formatTime with getMinutes for duration display
* refactor(order-datetime): update date and time handling to use datetime_start and datetime_end for improved consistency
* refactor(profile): streamline profile and slot pages by integrating session user retrieval and updating booking logic with BookButton component
* fix(navigation): append query parameter to bottom-nav links and enhance back navigation logic in success page
* web/packages: upgrade next
* fix(api/orders): update master validation logic to handle optional masters
* fix(api/notify, api/orders): enhance notification messages and update order state handling for masters
* fix react typings
* refactor(order-buttons, action-panel): streamline button handlers and add return functionality
* fix(contacts, orders): replace empty state messages with DataNotFound component for better user feedback
* feat(bot): add share bot command and update environment configuration for BOT_URL
* fix: pnpm-lock.yaml
* feat(bot): implement add contact wizard scene and enhance contact handling logic
* feat(profile): add BookContactButton component to enhance booking functionality
* fix(order-buttons): update cancel and confirm button logic based on order state
* feat(service-select): share services list for all
enhance service card display with duration formatting and improve layout
* prepare for header back button: fix pages layout
add header with back button
* set header title
* optimize layout
* remove navigation context
* make profile photo bigger
* remove page-header from main pages
* fix profile layout
* profile: use ui/Card
* fix app background
* contacts: use ui/Card component
* add basic profile page
* apps/web: detect telegram/browser
support browser (dev only)
* apps/web: add dark mode
* apps/web: support dark theme in tma
* apps/web: add loading spinner
remove dev info from page
* apps\web\app\(auth)\page.tsx: remove useState
* app/web: handle update profile name
* move debounce functional to hook
* add role checkbox