Size: a a a

2020 October 02

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
так мы далеко не уйдём
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
сначала постановка проблемы, потом попытка подобрать решение
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
как ты предлагаешь тебе помочь если ты не объясняешь задачу?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
mg901
скорее всего предётся завтодить переменную
let instance = null token.watch(token => instance = someLibrary({token: token}))
какой библиотеки, как она работает, где вообще, в конце концов, токен лежит?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
пытаться угадать идею бесполезно, нужно рассуждать
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
🚀🔬 🚀🔬🚀🔬
в примере выше у тебя токен читается из localStorage, это часть сайд-эффекта
поэтому в примере выше чтение токена и отправка запроса это соседние строки одного и того же сайд-эффекта
источник

DS

Dmitriy Shuleshov in ☄️ effector
mg901
но… вроде как это не безопасно
Ты знаешь почему это небезопасно ? и желательно покажи пальцем на того кто тебе это сказал
источник

m

mg901 in ☄️ effector
🚀🔬 🚀🔬🚀🔬
какой библиотеки, как она работает, где вообще, в конце концов, токен лежит?
И так. Мы имеем стор с токеном. Если мы удачно залогинились, мы получаем объект юзера с токеном, мэпим объект юзера и забираем токен.
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
mg901
И так. Мы имеем стор с токеном. Если мы удачно залогинились, мы получаем объект юзера с токеном, мэпим объект юзера и забираем токен.
тогда request выше становится эффектом, можно инлайновым, в который передается токен и аргументы вызова

const request = attach({
 source: $token,
 mapParams: ({url, data}, token) => ({url, data, token}),
 effect: createEffect(({url, data, token}) => {})
})
источник

DS

Dmitriy Shuleshov in ☄️ effector
mg901
И так. Мы имеем стор с токеном. Если мы удачно залогинились, мы получаем объект юзера с токеном, мэпим объект юзера и забираем токен.
А можно ответ на вопрос  - зачем, а не как?
источник

m

mg901 in ☄️ effector
Dmitriy Shuleshov
А можно ответ на вопрос  - зачем, а не как?
Дим, давай я сначала пойму как мне с токеном быть. Я не знаю как правильно. Тебя этот ответ устроит?
источник

DS

Dmitriy Shuleshov in ☄️ effector
Dmitriy Shuleshov
А можно ответ на вопрос  - зачем, а не как?
Этот ответ просто не мне нужен
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
mg901
export const TOKEN_NAME = 'jwt';
const API_ROOT = 'https://conduit.productionready.io/api';

type Request = <T>(method: string, url: string, data?: unknown) => Promise<T>;

const request: Request = async (method, url, data) => {
 const token = JSON.parse(String(localStorage.getItem(TOKEN_NAME)));

 const headers = {
   'Content-Type': 'application/json',
 };

 const options: RequestInit = {
   headers: token ? { ...headers, Authorization: `Token ${token}` } : headers,
   method: method.toUpperCase(),
   body: data ? JSON.stringify(data) : null,
 };

 const response = await fetch(`${API_ROOT}${url}`, options);

 if (response.ok) {
   return response.json();
 }

 throw await response.json();
};

export const get = <T>(url: string): Promise<T> => request<T>('get', url);
export const post = <T = void>(url: string, body?: unknown): Promise<T> =>
 request<T>('post', url, body);

export const put = <T = void>(url: string, body: unknown): Promise<T> =>
 request<T>('put', url, body);

export const del = <T = void>(url: string): Promise<T> =>
 request<T>('delete', url);
кстати хелперы get/post ничего не дают, если ты интересовался, откуда у тебя путанница в обёртках — вот от них
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
достаточно сделать нужные методы апи сразу от эффекта request выше
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
хелперы get post ничего не дают, потому что их создание и поддержка потребляет гораздо больше умственных сил, чем даёт взамен — указать способ запроса прямо в объявлении апи не так сложно, в отличии от попытки распутать длинный клубок вложенных сущностей
источник

DS

Dmitriy Shuleshov in ☄️ effector
🚀🔬 🚀🔬🚀🔬
хелперы get post ничего не дают, потому что их создание и поддержка потребляет гораздо больше умственных сил, чем даёт взамен — указать способ запроса прямо в объявлении апи не так сложно, в отличии от попытки распутать длинный клубок вложенных сущностей
Сделай эффект сет токен в котором будешь в инстанс аксиоса сетить токен. Тогда будет так

forward (
from: $token
to: setTokenFx
)
источник

DS

Dmitriy Shuleshov in ☄️ effector
mg901
Дим, давай я сначала пойму как мне с токеном быть. Я не знаю как правильно. Тебя этот ответ устроит?
Но лучше конечно задаваться вопросом не как а зачем.
источник

DS

Dmitriy Shuleshov in ☄️ effector
Dmitriy Shuleshov
Сделай эффект сет токен в котором будешь в инстанс аксиоса сетить токен. Тогда будет так

forward (
from: $token
to: setTokenFx
)
Это если хочешь императивный вотч заменить, хотя в нем нет ничего криминального.

Обычная связь с нереактивной библиотекой
источник

m

mg901 in ☄️ effector
🚀🔬 🚀🔬🚀🔬
хелперы get post ничего не дают, потому что их создание и поддержка потребляет гораздо больше умственных сил, чем даёт взамен — указать способ запроса прямо в объявлении апи не так сложно, в отличии от попытки распутать длинный клубок вложенных сущностей
тогда что я неправильно делаю? https://stackblitz.com/edit/typescript-ekczu3 почему у функции (якобы эффекта) нет finally метода?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
у жс фунций нет finally метода
источник