169 Commits

Author SHA1 Message Date
vchikalkin
b517519e7e feat: conditionally render services list based on customer role
- Added a check to prevent rendering the ReadonlyServicesList component for users with the 'Client' role, ensuring a tailored experience based on user permissions.
2025-10-11 14:21:37 +03:00
vchikalkin
a1af00af69 feat: allow order with inactive contacts 2025-10-11 14:09:18 +03:00
vchikalkin
311f6c183d fix: prevent subscription info bar from rendering for client role users
- Added a condition to return null for the SubscriptionInfoBar component if the customer role is 'Client', ensuring that clients do not see the subscription information.
2025-10-11 13:37:37 +03:00
vchikalkin
67cf9a8e26 feat: add subscription_price to subscription history
- Included subscription_price in the subscription history object to enhance tracking of trial subscriptions.
2025-10-11 13:36:54 +03:00
vchikalkin
6080aadc93 chore: add workflow_dispatch trigger to deploy.yml for manual deployment 2025-10-09 18:19:57 +03:00
vchikalkin
ee4e70f43d feat: integrate customer data into subscription invoice
- Added CustomersService to retrieve customer information based on telegramId.
- Enhanced invoice provider data to include customer phone and item details for improved payment processing.
- Updated the subscription function to utilize the new customer data in the invoice generation.
2025-10-09 18:04:38 +03:00
vchikalkin
4d40230864 fix: back button mounts after first app launch 2025-10-09 12:01:06 +03:00
vchikalkin
92119baa5e GQL: rename CheckCustomerExists -> _NOCACHE_GetCustomer 2025-10-09 11:26:28 +03:00
vchikalkin
1e9fd66e27 Refactor customer retrieval in addContact function to use RegistrationService
- Replaced the use of CustomersService.getCustomer with RegistrationService.checkCustomerExists for improved consistency in customer existence checks.
- Introduced a new instance of CustomersService for adding invited users, maintaining functionality while enhancing code clarity.
2025-10-09 09:44:43 +03:00
vchikalkin
aa11ecfcec fix "registrationService.getCustomer is not a function" 2025-10-09 00:33:25 +03:00
vchikalkin
8e61fbbb40 Fix: Refactor customer retrieval logic to use checkCustomerExists method
- Updated the addContact and registration features to replace getCustomer calls with checkCustomerExists, improving consistency in customer existence checks.
- Modified GraphQL operations to remove deprecated getCustomer queries and introduced a new checkCustomerExists query for better clarity and efficiency.
- Adjusted queryTTL configuration in cache-proxy to reflect the removal of unused endpoints.
2025-10-09 00:20:37 +03:00
vchikalkin
d32a7dc54e fix registration error 2025-10-08 22:43:24 +03:00
vchikalkin
0a43d63c2c bot: msg-contact-forward: use parse_mode HTML 2025-10-08 22:04:15 +03:00
vchikalkin
01d8bb20d5 Enhance GitHub Actions workflow for conditional builds and environment file management
- Introduced path filtering using `dorny/paths-filter` to conditionally build and push Docker images for web, bot, and cache-proxy projects based on changes.
- Added outputs to track which projects were built and modified the build and push steps to execute conditionally.
- Created separate environment files for each project tag and implemented logic to merge these files into a main `.env` file during deployment.
- Improved the deployment process by conditionally copying environment files to the VPS based on whether the corresponding project was built.
2025-10-08 18:13:09 +03:00
vchikalkin
20b2b44572 Update queryTTL configuration in cache-proxy to include new endpoints and set default values to false
- Added new entries for `GetCustomers`, `GetInvited`, `GetInvitedBy`, `GetOrders`, `GetServices`, `GetSlots`, and `GetSubscriptionHistory` with default values set to false.
- Removed the `Login` entry from the previous configuration, ensuring clarity in the query time-to-live settings.
2025-10-08 12:14:51 +03:00
vchikalkin
7fe1b89f5b Update PageHeader component to conditionally hide BackButton based on environment and TMA status
- Modified the logic in the PageHeader component to hide the BackButton when in production or when the TMA status is 'simple', improving user experience by reducing unnecessary navigation options.
2025-10-07 19:31:40 +03:00
vchikalkin
4a98ac5d3e Update middleware matcher to exclude 'offer' from routing
- Modified the middleware configuration to exclude the 'offer' path from the matcher, ensuring that requests to this route are handled appropriately.
2025-10-07 19:26:36 +03:00
vchikalkin
f8d0b7619f fix build 2025-10-07 19:17:31 +03:00
Vlad Chikalkin
0b64d8086c
Feature/documents pages (#118)
* apps/web: add generic privacy & offer pages

* Update environment variables and enhance offer and privacy pages

- Added `OFFER_URL` and `SUPPORT_TELEGRAM_URL` to environment variable configuration for better flexibility.
- Updated the offer page to dynamically link to the offer URL and improved contact information presentation with a direct link to the support Telegram.
- Revised the privacy policy page to reflect the service name and updated contact details, ensuring clarity and consistency in communication.

* move offer & privacy -> (documents) sub directory

* Update offer and privacy pages to include user consent for third-party data sharing

- Added a clause in the offer page requiring users to ensure consent from third parties when adding their contact information.
- Updated the privacy policy to clarify that users can share third-party data, emphasizing the need for consent for data processing within the service.

* Add privacy agreement and update environment variables

- Introduced `PRIVACY_URL` to the environment configuration for dynamic linking.
- Updated localization files to include a user consent agreement for sharing phone numbers, linking to the offer and privacy URLs.
- Enhanced welcome and contact addition messages to incorporate the new consent clause, improving user clarity on data handling.

* Refactor phone agreement localization and enhance user consent messaging

- Updated the Russian localization file to streamline the phone sharing agreement, improving clarity on user consent for data processing.
- Modified the contact addition and welcome messages to incorporate the new agreement format, ensuring users are informed about their consent to share personal data.

* Enhance Russian localization and update message formatting

- Added a new payment agreement clause in the Russian localization file, clarifying user consent for payments.
- Updated message formatting in the contact addition and subscription processes to support HTML parsing, improving message presentation and user experience.
- Incorporated the new payment agreement into the subscription flow, ensuring users are informed about their consent to the terms.

* Refactor Russian localization for contact agreements and enhance user consent messaging

- Updated the Russian localization file to separate and clarify the phone sharing and contact sharing agreements, improving user understanding of consent requirements.
- Modified the contact addition and welcome messages to utilize the new agreement format, ensuring users are informed about their consent to share personal data in a more structured manner.

* Enhance Russian localization and add document handling features

- Updated the Russian localization file to include new entries for privacy policy and public offer documents, improving user access to important information.
- Added 'documents' command to the bot's command list, allowing users to easily access document-related features.
- Integrated document handling in the main menu and handlers, enhancing user experience and navigation within the bot.
2025-10-07 19:13:41 +03:00
vchikalkin
458a06a620 Refactor async components to synchronous functions for improved performance
- Converted several async components to synchronous functions, including `Layout`, `AddOrdersPage`, `ProfilePage`, `SlotPage`, and `ServicePage`, enhancing rendering efficiency.
- Removed unnecessary prefetching logic and hydration boundaries, simplifying component structure and improving maintainability.
- Updated the `TelegramProvider` to return null during the initial mount instead of a loading message, streamlining the loading state handling.
- Enhanced loading state management in order-related components by adding loading spinners and data not found alerts, improving user experience during data fetching.
2025-10-07 13:28:40 +03:00
vchikalkin
c7648e8bf9 Enhance contact management by adding surname input and updating customer handling
- Introduced a new input for capturing the surname of the user during contact addition.
- Updated the contact parsing logic to include surname alongside name and phone number.
- Modified the customer creation and update processes to accommodate surname, ensuring full name is used in confirmation messages.
- Adjusted localization files to reflect the new surname input prompt and updated confirmation messages.
- Refactored components to utilize a unified method for retrieving full customer names, improving consistency across the application.
2025-10-07 12:36:03 +03:00
vchikalkin
9244eaec26 2025-10-07 11:25:59 +03:00
vchikalkin
d109d50120 Add QuickAppointment component to profile page and integrate Radix UI Drawer
- Introduced a new `QuickAppointment` component for scheduling appointments directly from the profile page.
- Integrated the `QuickAppointment` component into the profile layout, allowing users to book appointments with a selected master or client.
- Implemented a Radix UI Drawer for the appointment booking interface, enhancing user experience with a modal-like interaction.
- Updated `pnpm-lock.yaml` and `package.json` to include new dependencies for the Radix UI components and the `vaul` library.
2025-10-07 11:04:56 +03:00
vchikalkin
8aaae245a7 Refactor Apollo Client setup by removing createLink function
- Updated the `createApolloClient` function to directly handle authorization headers and GraphQL URI configuration, improving modularity and reducing complexity.
- Removed the `createLink` function, streamlining the client setup process and enhancing maintainability.
- Renamed type `Parameters` to `Parameters_` for clarity in the client function signature.
2025-10-07 10:14:09 +03:00
vchikalkin
c4b76a4755 docker-compose: comment healthcheck 2025-10-06 23:46:33 +03:00
vchikalkin
cb4763e32b env(cache-proxy): fix missing REDIS_HOST 2025-10-06 23:34:56 +03:00
Vlad Chikalkin
2836153887
Feature/caching (#117)
* Refactor GraphQL client usage in services to improve consistency

- Replaced direct calls to `getClientWithToken` with a new method `getGraphQLClient` across multiple services, ensuring a unified approach to obtaining the GraphQL client.
- Updated the `BaseService` to manage the GraphQL client instance, enhancing performance by reusing the client when available.

* Refactor UpdateProfile component to use useClientOnce for initial profile update

- Replaced useEffect with useClientOnce to handle the first login profile update more efficiently.
- Removed local state management for hasUpdated, simplifying the component logic.
- Updated localStorage handling to ensure the profile update occurs only on the first login.

* Refactor Apollo Client setup to improve modularity and maintainability

- Introduced a new `createLink` function to encapsulate the link creation logic for Apollo Client.
- Updated `createApolloClient` to utilize the new `createLink` function, enhancing code organization.
- Simplified the handling of authorization headers by moving it to the link configuration.

* Add cache-proxy application with initial setup and configuration

- Created a new cache-proxy application using NestJS, including essential files such as Dockerfile, .gitignore, and .eslintrc.js.
- Implemented core application structure with AppModule, ProxyModule, and ProxyController for handling GraphQL requests.
- Configured caching with Redis and established environment variable management using Zod for validation.
- Added utility functions for query handling and time management, enhancing the application's functionality.
- Included README.md for project documentation and setup instructions.

* Add cache-proxy service to Docker configurations and update deployment workflow</message>

<message>
- Introduced a new cache-proxy service in both `docker-compose.dev.yml` and `docker-compose.yml`, with dependencies on Redis and integration into the web and bot services.
- Updated GitHub Actions workflow to include build and push steps for the cache-proxy image, ensuring it is deployed alongside web and bot services.
- Modified environment variable management to accommodate the cache-proxy, enhancing the overall deployment process.
- Adjusted GraphQL cached URL to point to the cache-proxy service for improved request handling.

* Add health check endpoint and controller to cache-proxy service

- Implemented a new HealthController in the cache-proxy application to provide a health check endpoint at `/api/health`, returning a simple status response.
- Updated the AppModule to include the HealthController, ensuring it is registered within the application.
- Configured a health check in the Docker Compose file for the cache-proxy service, allowing for automated health monitoring.

* Update proxy controller and environment variable for cache-proxy service

- Changed the route prefix of the ProxyController from `/proxy` to `/api` to align with the new API structure.
- Updated the default value of the `URL_GRAPHQL_CACHED` environment variable to reflect the new route, ensuring proper integration with the GraphQL service.

* Update cache proxy configuration for query time-to-live settings

- Increased the time-to-live for `GetCustomer`, `GetOrder`, `GetService`, and `GetSlot` queries to 24 hours, enhancing cache efficiency and performance.
- Maintained the existing setting for `GetSubscriptions`, which remains at 12 hours.

* Enhance subscription management and configuration settings

- Added new query time-to-live settings for `GetSlotsOrders`, `GetSubscriptionPrices`, and `GetSubscriptions` to improve caching strategy.
- Implemented `hasTrialSubscription` method in `SubscriptionsService` to check for trial subscriptions based on user history, enhancing subscription management capabilities.
- Updated GraphQL operations to reflect the change from `getSubscriptionSettings` to `GetSubscriptionSettings`, ensuring consistency in naming conventions.

* fix build

* Refactor subscription settings naming

- Updated the naming of `getSubscriptionSettings` to `GetSubscriptionSettings` in the cache-proxy configuration for consistency with other settings.
2025-10-06 23:26:03 +03:00
vchikalkin
1c669f04dd optimize: skip has getSubscription request if user has no subscriptions 2025-09-27 16:52:14 +03:00
vchikalkin
047a9b1956 hide TryFreeButton if user had any subscription 2025-09-27 16:42:13 +03:00
vchikalkin
d9e67bf4ba Refactor registration feature to improve reply handling
- Updated the registration feature to use KEYBOARD_REMOVE before sending the support message, enhancing user interaction flow.
- Ensured consistent reply structure by replacing direct message returns with await calls for better asynchronous handling.
2025-09-20 12:44:27 +03:00
vchikalkin
80d29af1b4 Update registration and welcome features to use mainMenu for replies
- Modified the registration feature to replace KEYBOARD_REMOVE with mainMenu in reply messages.
- Updated the welcome feature to use mainMenu instead of combining messages for a cleaner response structure.
2025-09-20 12:11:08 +03:00
vchikalkin
d191be03e8 Refactor welcome feature to use RegistrationService for customer retrieval
- Replaced CustomersService with RegistrationService in the welcome feature to streamline customer data retrieval.
- Updated the command handler to ensure proper integration with the new service.
2025-09-20 11:58:04 +03:00
vchikalkin
900cfe2cc2 Enhance subscription handling in bot and GraphQL API
- Updated the `createOrUpdateSubscription` method in the SubscriptionsService to accept an optional `paymentId` parameter for better tracking of payment transactions.
- Modified the bot's subscription feature to pass the `provider_payment_charge_id` when creating or updating subscriptions, improving payment processing accuracy.
2025-09-20 11:51:19 +03:00
vchikalkin
1f168df095 Refactor ProPage and improve back button logic
- Removed the unused PageHeader component from ProPage for a cleaner layout.
- Updated the isRootLevelPage function to enhance path exclusion logic, ensuring it correctly identifies root level pages.
2025-09-19 16:21:12 +03:00
vchikalkin
3e0ac818f2 bot(priceButtons): продлить/доступ 2025-09-18 19:41:05 +03:00
vchikalkin
29ecc47822 Fix logic in isRootLevelPage function to correctly identify root level pages 2025-09-18 19:31:27 +03:00
vchikalkin
86f0d87c31 Refactor subscription logic to remove unused trial subscription variable
- Eliminated the `usedTrialSubscription` variable from the subscription function.
- Updated the subscription period condition to directly reference `GQL.Enum_Subscriptionprice_Period.Trial` for clarity.
2025-09-18 19:18:58 +03:00
vchikalkin
a9fd9808ec shorter msg-invalid-phone 2025-09-18 19:06:02 +03:00
vchikalkin
31adf7e7b3 Update Russian localization and enhance contact addition flow
- Changed terminology from "клиент" to "пользователь" for consistency in user interactions.
- Updated messages to clarify user instructions for adding contacts and handling phone numbers.
- Added validation to prevent users from adding their own phone number as a contact.
- Improved conversation prompts for better user experience during contact addition.
2025-09-18 19:00:35 +03:00
vchikalkin
ec3c2869c1 Update bot features and localization
- Added new buttons and messages in Russian localization for improved user interaction.
- Integrated '@grammyjs/menu' version 1.3.1 to enhance menu functionality.
- Refactored bot command handlers to streamline conversation flows and improve code organization.
- Updated the main menu structure to include new options for adding contacts and subscription information.
2025-09-18 18:09:35 +03:00
vchikalkin
24aabae434 Enhance ProPage: Add subscription pricing display and update layout
- Integrated subscription pricing information by fetching active subscription prices and displaying them on the ProPage.
- Adjusted layout margins for improved visual consistency in the header and benefits sections.
- Enhanced user experience by conditionally rendering the pricing section based on available subscription prices.
2025-09-18 15:47:45 +03:00
vchikalkin
81e0168e44 Enhance ProPage: Update bot URL handling for trial subscriptions
- Introduced a new URL construction for the bot link, incorporating a 'start' parameter set to 'pro' for improved trial subscription management.
- Updated the link in the ProPage to utilize the newly constructed bot URL, ensuring users are directed correctly for Pro access through the bot.
2025-09-18 15:30:06 +03:00
vchikalkin
eb0ad25c3c fix back-button on /pro 2025-09-18 15:12:58 +03:00
vchikalkin
7c7ddcf0d5 typo: Pro Доступ 2025-09-18 14:17:14 +03:00
vchikalkin
106fdc0da5 refactor(profile): simplify profile page structure and enhance loading states
- Removed unnecessary data fetching and hydration logic from the main profile page.
- Updated the rendering of components to improve clarity and performance.
- Enhanced loading states in various profile components for better user experience.
- Refactored service list handling to utilize telegramId instead of masterId for consistency.
2025-09-18 14:02:10 +03:00
vchikalkin
a669e1846e fix(web): profile page getSubscriptionSettings queryKey 2025-09-18 13:10:36 +03:00
vchikalkin
8092c7fecc hotfix(auth): missing session 2025-09-18 12:51:20 +03:00
Vlad Chikalkin
363fce4499
Feature/pro subscription (#103)
* feat(profile): add subscription information to profile page

- 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.

* refactor(tests): remove BOT_TOKEN from environment mocks in order and slots tests

- Eliminated the hardcoded BOT_TOKEN from the environment mock in both orders.test.js and slots.test.js to streamline test configurations and improve security practices.

* feat(env): add BOT_URL to environment variables and update related configurations

- 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.

* feat(pro-page): use next/link

* feat(pro-page): enhance subscription messaging and add benefits section

- Updated subscription status messaging for clarity and conciseness.
- Improved button styling based on trial availability.
- Added a new benefits section for non-active subscribers, highlighting key features of the Pro subscription.

* fix(pro-page): adjust hero section layout for improved visual consistency

- Reduced margin in the hero section to enhance alignment and overall aesthetics of the Pro page.

* feat(subscriptions): add trial subscription functionality

- 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.

* refactor(pro-page): streamline ProPage layout and improve bottom navigation visibility

- Consolidated the main container for the ProPage to enhance layout consistency.
- Updated the BottomNav component to conditionally hide on the Pro page, improving navigation clarity for users.

* feat(subscriptions): add trial period validation for subscriptions

- Implemented a check to verify if a user has already utilized their trial period before allowing access to subscription services.
- Enhanced error handling to provide a clear message when a trial period has been previously used, improving user experience and subscription management.

* style(pro-page, subscription-bar): enhance dark mode support and improve styling consistency

- 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.

* feat(orders, subscriptions): implement banned user checks and improve remaining orders calculation

- Added `checkIsBanned` method calls in the `createOrder`, `getOrder`, `getOrders`, and `updateOrder` methods of the `OrdersService` to prevent actions from banned users.
- Updated the calculation of `remainingOrdersCount` in the `SubscriptionsService` to ensure it does not go below zero, enhancing subscription management accuracy.

* feat(subscriptions): enhance error handling with centralized error messages

- Introduced a centralized `ERRORS` object in the `subscriptions.ts` file to standardize error messages related to trial subscriptions.
- Updated error handling in the `createSubscription` method to utilize the new error messages, improving maintainability and clarity for subscription-related errors.

* feat(orders): implement order limit checks for clients and masters

- Added order limit validation in the `OrdersService` to check if a master has reached their monthly order limit.
- Introduced new error messages for exceeding order limits, enhancing user feedback for both clients and masters.
- Integrated `SubscriptionsService` to manage subscription status and remaining order counts effectively.

* order-card: fix order_number badge overlays navigation bar

* fix(docker-compose): update healthcheck endpoint to include API path

* feat(profile): add MasterServicesList component to display services for profile masters

- 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.

* feat(profile): conditionally render SubscriptionInfoBar based on user role

- Updated ProfilePage to check if the user is a master and conditionally render the SubscriptionInfoBar component.
- Refactored customer fetching logic to include a utility function for determining user role.

* fix tests

* fix(typo): rename updateSlot to updateOrder for clarity

* refactor(contact): remove customer master role checks and simplify contact addition

- 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.

* refactor(contacts): rename masters to invited and update related functionality

- Changed the terminology from "masters" to "invited" and "invitedBy" across the codebase for clarity and consistency.
- Updated the `addContact` function to reflect the new naming convention.
- Refactored API actions and server methods to support the new invited structure.
- Adjusted components and hooks to utilize the updated invited data, enhancing user experience and simplifying logic.

* feat(profile): enhance user role checks in subscription and links components

- 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.

* refactor(contacts): update grid components and improve customer role handling

- Renamed InvitedByGrid to MastersGrid and InvitedGrid to ClientsGrid for clarity.
- Enhanced customer role checks by using documentId for identifying the current user.
- Updated the contacts passed to grid components to reflect the new naming and role structure.
- Adjusted titles in grid components for better user experience.

* feat(order): enhance order initialization logic with additional client selection step

- Added a new step for client selection in the order initialization process when only a masterId is present.
- Disabled cognitive complexity checks for improved code maintainability.

* feat(contacts): add showServices prop to ContactRow for conditional rendering

- Updated ContactsList to pass showServices prop to ContactRow.
- Modified ContactRow to conditionally render services based on the showServices prop, enhancing the display of contact information.

* feat(contacts): add DataNotFound component for empty states in contacts and services grids

- Integrated DataNotFound component to display a message when no contacts or services are found in the respective grids.
- Enhanced loading state handling in ServicesSelect and ScheduleCalendar components to improve user experience during data fetching.

* feat(contacts): enhance contact display and improve user experience

- Updated ContactsList to include a description prop in ContactRow for better service representation.
- Renamed header in OrderContacts from "Контакты" to "Участники" for clarity.
- Replaced Avatar components with UserAvatar in various components for consistent user representation.
- Filtered active contacts in MastersGrid and ClientsGrid to improve data handling.
- Adjusted customer query logic to ensure proper handling of telegramId.

* feat(customers): add getCustomers API and enhance customer queries

- Introduced getCustomers action and corresponding server method to fetch customer data with pagination and sorting.
- Updated hooks to support infinite querying of customers, improving data handling in components.
- Refactored ContactsList and related components to utilize the new customer fetching logic, enhancing user experience.
- Adjusted filter labels in dropdowns for better clarity and user understanding.

* refactor(contacts): consolidate customer queries and enhance contact handling

- Replaced use of useCustomersInfiniteQuery with a new useContactsInfiniteQuery hook for improved data fetching.
- Simplified ContactsList and MastersGrid components by removing unnecessary customer documentId filters.
- Deleted outdated contact-related hooks and queries to streamline the codebase.
- Enhanced loading state management across components for better user experience.

* fix(avatar): update UserAvatar sizes for consistency across components

- Changed UserAvatar size from 'xl' to 'lg' in PersonCard for better alignment with design.
- Adjusted UserAvatar size from 'sm' to 'xs' in OrderCard to ensure uniformity in avatar presentation.
- Updated sizeClasses in UserAvatar component to reflect the new 'xs' size, enhancing responsiveness.

* fix(auth): ensure telegramId is a string for consistent handling

- Updated the signIn calls in both Auth and useAuth functions to convert telegramId to a string.
- Modified the JWT callback to store telegramId as a string in the token.
- Enhanced session handling to correctly assign telegramId from the token to the session user.
- Added type definitions for telegramId in next-auth to ensure proper type handling.

* fix(auth): handle unregistered users in authentication flow

- Updated the authentication logic in both Auth and useAuth functions to redirect unregistered users to the '/unregistered' page.
- Enhanced error handling in the authOptions to check for user registration status using the Telegram ID.
- Improved the matcher configuration in middleware to exclude the '/unregistered' route from authentication checks.

* feat(subscriptions): add SubscriptionRewardFields and update related types

- Introduced SubscriptionRewardFields fragment to encapsulate reward-related data for subscriptions.
- Updated CustomerFiltersInput and SubscriptionHistoryFiltersInput to include subscription_rewards for enhanced filtering capabilities.
- Added SubscriptionRewardFiltersInput and SubscriptionRewardInput types to support reward management in subscriptions.
- Modified existing fragments and queries to reflect the new structure and ensure consistency across the codebase.

* test payment

* feat(subscriptions): refactor subscription handling and update related queries

- Renamed `hasUserTrialSubscription` to `usedTrialSubscription` for clarity in the SubscriptionsService.
- Updated subscription-related queries and fragments to use `active` instead of `isActive` for consistency.
- Enhanced the ProPage component to utilize the new subscription checks and improve trial usage logic.
- Removed unused subscription history query to streamline the codebase.
- Adjusted the SubscriptionInfoBar to reflect the new subscription state handling.

* feat(subscriptions): update subscription messages and enhance bot functionality

- Renamed `msg-subscribe-active-until` to `msg-subscription-active-until` for consistency in localization.
- Added `msg-subscription-active-days` to inform users about remaining subscription days.
- Refactored subscription handling in the bot to utilize updated subscription checks and improve user messaging.
- Enhanced conversation flow by integrating chat action for typing indication during subscription interactions.

* feat(subscriptions): enhance subscription handling and localization updates

- Added new message `msg-subscribe-disabled` to inform users when their subscription is disabled.
- Updated `msg-subscription-active-days` to ensure proper localization formatting.
- Refactored subscription command in the bot to check for subscription status and respond accordingly.
- Enhanced ProfilePage to conditionally render the SubscriptionInfoBar based on subscription status.
- Updated GraphQL types and queries to include `proEnabled` for better subscription management.

* feat(bot): enhance conversation handling by removing redundant typing indication

- Added a chat action for 'typing' indication at the start of the bot's conversation flow.
- Removed the redundant 'typing' action from individual conversation handlers to streamline the code.

* feat(localization): update Russian localization with support contact and message adjustments

- Added a new support contact message for user inquiries.
- Refactored existing messages to utilize the new support contact variable for consistency.
- Cleaned up redundant messages and ensured proper localization formatting across various sections.

* feat(localization): add Pro subscription information and update command list

- Introduced new localization entry for Pro subscription information.
- Updated command list to include 'pro' command for better user guidance.
- Enhanced existing subscription messages for clarity and consistency.

* feat(localization): update Pro access terminology and enhance subscription messages

- Replaced instances of "подписка" with "доступ" to clarify Pro access terminology.
- Updated subscription-related messages for improved user understanding and consistency.
- Enhanced command list and bot responses to reflect changes in Pro access messaging.

* feat(subscriptions): enhance subscription flow and localization updates

- Updated default locale to Russian for improved user experience.
- Refactored subscription messages to include expiration dates and active subscription status.
- Enhanced keyboard display for subscription options with clear expiration information.
- Improved handling of subscription-related queries and responses for better clarity.

* update support contact

* update bot description

* .github\workflows\deploy.yml: add BOT_PROVIDER_TOKEN
2025-09-17 14:46:17 +03:00
Vlad Chikalkin
3d0f74ef62
Hotfix/bot registraion add contact (#99)
* refactor(registration): remove checkBanStatus method and related logic

* fix(BaseService): streamline customer permission checks by consolidating conditions

* bot: remove logger from context

* refactor(bot): update conversation handling and middleware integration

- Replaced the previous conversations middleware with the Grammy framework's implementation.
- Introduced a loop to register custom conversations, enhancing the bot's conversation management capabilities.
- Removed the addContact feature implementation from the add-contact file, streamlining the codebase.

* feat(bot): add cancel command to conversation middleware

- Implemented a '/cancel' command in the bot's conversation middleware to allow users to exit all conversations gracefully.
- Removed the manual cancellation check from the addContact conversation, streamlining the code and improving user experience.

* fix(bot): conversations register - disable minification in build configuration
2025-09-07 16:36:31 +03:00
Vlad Chikalkin
0934417aaf
Fix/rc 1 (#89)
* Revert "packages(apps/web): upgrade next@15.5.0"

This reverts commit 22e4f72ee6e36834672e44a25acf8a5797dcca8c.

* docker-compose: add volumes

* Update Dockerfiles to install specific version of turbo (2.3.2) for consistent dependency management

* .github\workflows\deploy.yml: remove REDIS_PASSWORD env variable

* Update deploy.yml to add REDIS_PASSWORD environment variable for improved configuration management

* Reapply "packages(apps/web): upgrade next@15.5.0"

This reverts commit bcb9be88dfd1b57d6ce6f47bedca4aa3e8db0eae.

* refactor(bot): remove Redis integration from bot configuration

- Eliminated Redis instance and related storage client from the bot's configuration, streamlining the setup and reducing dependencies.
- Updated bot middleware to enhance performance and maintainability.

* Revert "refactor(bot): remove Redis integration from bot configuration"

This reverts commit 4fbbccb0a2967af0c92ff19fe337467347d9a91a.

* docker compose: format

* bot: fix production run (logger problem)

* docker-compose: add app network to redis
2025-08-27 11:37:15 +03:00