Зона ответственности при проектировании
Есть структура:
Сервис API (оболочка для ajax c перехватчиком и подстановкой токена)
Сервис авторизации (вызов api по адресу, с передачей данных - список адресов по сути)
Сервис уведомлений (показывает окошко пользователю с сообщением)
Хранилище (vuex)
Компонент авторизации (компонент vue)
Соответственно, html шаблон формы находится в компоненте авторизации. Компонент инициирует авторизацию, т.е. из компонента через метод дергается сервис авторизации - дай нам логин вот с этими данными.
AuthService.login(vm.data).then(...
Сервис авторизации дергает сервис API - вот данные, такой url - отправь.
async login(payload) {
return apiClient.post("/auth/login", payload);
},
Сервис авторизации если ответ адекватный - возвращает ответ (resolve), а если пришел ответ в неизвестном формате - дергает сервис уведомлений и передает туда ответ(reject).
Далее вот непонятно. кто должен ждать ответа, и сохранять данные в хранилище - сервис авторизации или все же компонент. Т.к. после получения ответа - еще надо сохранить токен, получить данные пользователя после сохранения токена, уведомить пользователя о результате, перенаправить его если надо на какую то страницу.
Мне почему то, хочется запихнуть это в компонент. Это же логика авторизации непосредственно. Но тогда непонятно для чего выделялся Сервис авторизации. Адрес можно и в компоненте тогда хранить.
Хотя может потому что сервис авторизации завязан на API и чтоб при смене адресов не лазить по компонентам а заменить все в сервисах.
Если отправлять все в сервис авторизации, то слишком много телодвижений надо будет чтобы передавать данные в компонент для вывода ошибок в html. Да и тогда сервис авторизации должен знать что то о хранилище. Когда компонент о нем знает в любом случае. В общем чет я запутался.
Как вообще решать такие вопросы если нету в окружении более опытных коллег? Я понимаю что понимание приходит с опытом - но может есть какие то негласные правила, которые могут помочь как то определяться с зонами ответственности? Или где то есть что почитать по этим вещам?