Skip to content

Instantly share code, notes, and snippets.

@7iomka
7iomka / navigation.model.ts
Created August 8, 2023 09:35
_Next_Router_events
import type { ParsedUrlQuery } from 'querystring';
import { createEvent, attach, createStore, sample, restore } from 'effector';
import type { NextRouter } from 'next/router';
import equal from 'fast-deep-equal';
import { debug } from 'patronum/debug';
import { getUrlWithoutOriginFromUrlObject } from '@xxx/utils';
import { atom } from '@/shared/lib/factory';
import type { PageContext } from '@/shared/lib/nextjs-effector';
import type { NextHistoryState } from './navigation.types';
@7iomka
7iomka / trusted-order-info.md
Last active July 18, 2023 10:12
Trusted order info flow

Faq по trusted-order-info flow

  1. Пользователь попадает из письма по ссылке вида /trusted-order-info/[id]
  2. На клиенте запрашиваем по id из квери параметров ссылки информацию о доверенном заказе (отдельное api) (id-шник это не айди заказа а уникальный айди связки заказа с текущим доверенным лицом которое привязано к заказу)
  3. Бекенд у себя чекает разрешения доступа по ссылке (проверяются из хедеров данные авторизованного юзера на предмет соответствия номера на который он регился с номером телефона доверенного лица этого заказа)
    1. Если пользователь не авторизован бэкенд должен выдать ошибку с дополнительными мета данными phone - номер телефона который будет вбит в гибридную форму авторизации-регистрации по телефону. После авторизации шлём повторно запрос на инфу о заказе. Сейчас бекенд должен всё успешно вернуть - на ui отображаем верстку.
  4. Если пользователь авторизован и телефон не совпадает с номером который привязан к привязанному доверенному лицу заказа - выдавать ошибку
@7iomka
7iomka / middeware.ts
Created June 15, 2023 19:53
next.js middleware
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
import { appConfig } from '@appns/config/app';
import { routes, isAuthRoute, isProtectedRoute, isAdminRoute } from '@/shared/routes';
const redirectTo = (
request: NextRequest,
to: string,
includeFrom = false,
includeReset = false,
@7iomka
7iomka / test.tx
Created June 12, 2023 18:05
айдос
айдос
@7iomka
7iomka / ral-classic-grouped.ts
Created June 12, 2023 12:55
Colors grouped
const ralClassicGroupMap = {
'ral_classic_1': 'Жёлтые тона',
'ral_classic_2': 'Оранжевые тона',
'ral_classic_3': 'Красные тона',
'ral_classic_4': 'Фиолетовые тона',
'ral_classic_5': 'Синие тона',
'ral_classic_6': 'Зелёные тона',
'ral_classic_7': 'Серые тона',
'ral_classic_8': 'Коричневые тона',
'ral_classic_9': 'Чёрные и белые тона',
@7iomka
7iomka / Вопросы по статусу заказа.md
Last active June 6, 2023 12:16
Вопросы по статусу заказа.md

Вопросы по статусу заказа

Нужно поменять в апишке типы для разделения понимания что отвечает за статус оплаты а что за статус заказа сейчас эти вещи немного смешаны например

export interface OrderPaymentInfo {
  orderStatus: PaymentStatus;
}
@7iomka
7iomka / error.log
Created May 31, 2023 12:20
panic error macos
panic(cpu 0 caller 0xfffffe001fea83fc): DCPEXT0 PANIC - ASSERT: AFKSerialize.cpp:507: [_data] - iomfb_video_async(12)
ASSERT: AFKSerialize.cpp:507: [_data]
RTKit: RTKit-1827.120.2.debug - Client: local-t600xdcp.release
!UUID: 18e3d9e4-33fa-331f-85a8-b18722833e30
Time: 0x000035d91ee1377e
Faulting task 12 Call Stack: 0x000000000001d94c 0x000000000001d45c 0x000000000001d318 0x00000000000203e8 0x00000000000326f8 0x0000000000032784 0x000000000003238c 0x00000000000958c4 0x00000000000324cc 0x00000000000323f8 0x00000000000958c4 0x00000000000324cc 0x00000000000322b4 0x0000000000145e30 0x0000000000145cf4 0x00000000001441f4 0x000000000013cd4c 0x0000000000143e14 0x00000000000e73a0 0x00000000000dd0cc 0x000000000001dde0 0x0000000000011230 000000000000000000
RTKit Task List:
name | pri | stack use | status | resource | warning
0 rtk_background | 007 | 848/2048 | SEMWAIT | 0x859fc0 |
@7iomka
7iomka / cache.ts
Created May 24, 2023 19:14
http cache
export interface HttpCacheEntry {
data: any;
expires: number;
}
export interface SerializeCacheKeyPayload {
headers?: Record<string, string>;
method?: string;
url: string;
body?: Record<string, any>;
@7iomka
7iomka / colors.ts
Created May 21, 2023 20:56
Custom colors
/**
* Extend default Tailwind color palette with missing Mantine colors
* NOTE: Mantine supports only 10 colors in each color-shade
* Because of typescript issues we copypasted tw colors & replaced needed values
* We omitted string values like black and white, so we added it only inside tailwind config
*/
const colorPalette = {
// Mantine colors, that's missing in tw palette
dark: {
50: '#c1c2c5',
@7iomka
7iomka / HELP_WANTED.md
Created April 29, 2023 15:40
Events related with next.js router - handle with effector issues

В next.js для статических страниц доступ к квери параметрам доступен только на клиенте и только после того как роутер на клиенте получит необходимые данные об этих квери параметрах (после чудо-гидрации, когда router.isReady) У нас есть такая схема инициализации юнитов для роутера

  /**
   * Gate for next router,
   * => null, when page is not mounted / on unmount
   * => router state, when page is mounted
   */
  const RouterGate = createGate<NextRouter | null>(null!);