Задать вопрос
Ответы пользователя по тегу Веб-разработка
  • Как вы обыгрываете 500 ошибку в UI/UX?

    IU_Sviridov
    @IU_Sviridov
    Развиваюсь в направлении web-разработки
    1 вариант, но с поправкой на то, что в ui/ux оно выводится в правом нижнем углу и ничего не происходит более. Пользователь понимает, что он ввел некорректные креды или проблема с сервером и больше не пытается что-то сделать. Но у нас пользователи достаточно продвинутые и поймут, что при условии что сервак сбоит - не будет пытаться делать что-то дальше и тратить свое время.
    Технически выглядит следующим образом:

    - Есть errorService - который вызывается глобально в необходимом вам месте в коде.
    - Принимает 4 параметра в следующем виде: errorService (statusCode, title, description, source)
    - async handleError(statusCode, title, description, source), формирует что-то вроде строки userAnswer в зависимости от statusCode и передает ее дальше (this.__handleUserResponse({ title, description, userAnswer, source }))
    Вот пример дальнейшей обработки:
    __handleUserResponse(response) {
            switch (response.userAnswer) {
                case 'toLogin':
                    window.location = '/Home/Login/';
                    break;
                case 'reload':
                    location.reload(true);
                    break;
                case 'goBack':
                    Backbone.history.history.back();
                    break;
                case 'showLoginPopup':
                    LoginService.showLoginPopup();
                    break;
                case 'close':
                    break;
                case 'showNotification': {
                    let text = null;
                    const title = this.__filterServiceMessageText(response.title);
    
                    try {
                        let parsedDescription;
                        if (response.source) {
                            parsedDescription = response.source;
                        } else if (response.description) {
                            parsedDescription = JSON.parse(response.description);
                        }
                        if (parsedDescription) {
                            if (Array.isArray(parsedDescription.extraData)) {
                                parsedDescription.extraData.forEach(item => {
                                    text = item.message || item.Message || parsedDescription.message || '';
                                    if (text) {
                                        this.showNotification({ text });
                                    }
                                });
                            } else if (parsedDescription.extraData) {
                                if (typeof parsedDescription.extraData === 'string') {
                                    text = parsedDescription.extraData;
                                } else {
                                    text = Object.values(parsedDescription.extraData).join('\n');
                                }
    
                                if (text || title) {
                                    this.showNotification(text ? { text, title } : title);
                                }
                            } else if (parsedDescription.message) {
                                text = parsedDescription.message;
    
                                if (text || title) {
                                    this.showNotification(text ? { text, title } : title);
                                }
                            }
                        }
                    } catch (e) {
                        if (text || title) {
                            this.showNotification(text ? { text, title } : title);
                        }
                    }
                    break;
                }
                default:
                    break;
            }
        }
    Ответ написан
    Комментировать