• Почему папка не добавляется в репозиторий?

    @KateSin Автор вопроса
    Огромное спасибо, это сработало!
  • Почему папка не добавляется в репозиторий?

    @KateSin Автор вопроса
    Сергей Кузнецов,
    Удаление .git не решило проблему. Ну и сама я его туда не добавляла, при удалении и переустановке mainapp-ui командой npx create-react-app mainapp-ui .git автоматически там появляется.

    Вот содержимое .gitignore:
    # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
    
    # dependencies
    /node_modules
    /.pnp
    .pnp.js
    
    # testing
    /coverage
    
    # production
    /build
    
    # misc
    .DS_Store
    .env.local
    .env.development.local
    .env.test.local
    .env.production.local
    
    npm-debug.log*
    yarn-debug.log*
    yarn-error.log*


    Корне репозитория у вас нет случайно файла .gitmodules?

    Нет, не обнаружила
  • Почему папка не добавляется в репозиторий?

    @KateSin Автор вопроса
    Сергей Кузнецов,
    1. За название извиняюсь, не сформулировала проблему в виде вопроса, а без знака "?" опубликовать не дает. Спасибо за уточнение.

    2. Команда git add полностью для mainapp-ui выглядит так:
    git add mainapp-ui

    3. Вызов ls -a в mainapp-ui выдает следующее:
    ls -a
    .                       .git                    README.md               package-lock.json       public
    ..                      .gitignore              node_modules            package.json            src


    Внимательно приглядевшись, обнаружила через команду git status, что mainapp-ui записывается как файл
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            new file:   mainapp-ui


    и в git hub отображается не как остальные репозитории, и не прокликивается, что еще больше путает.

    63c90d4466a0e603232934.png
  • Как сохранять диалог react-chatbot-kit?

    @KateSin Автор вопроса
    Ne7Le4Der, спасибо за подсказку, дополнила в комментариях
  • Как сохранять диалог react-chatbot-kit?

    @KateSin Автор вопроса
    Дополнение - непосредственно код в основных компонентах

    // Bot.js - в итоге импортирован в App.js приложения и использован внутри return() в виде ''

    export const Bot = () => {
    
        const [isBotOpen, setIsBotOpen] = useState(false)
    
        const handleOpenBot = () => {
            if (isBotOpen === false) {
                setIsBotOpen(true)
            } else if (isBotOpen === true) {
                setIsBotOpen(false)
            }
        }
    
        const saveMessages = (messages, HTMLString) => {
            localStorage.setItem('chat_messages', JSON.stringify(messages))
        }
    
        const loadMessages = () => {
            if (localStorage.getItem('chat_messages')) {
                const messages = JSON.parse(localStorage.getItem('chat_messages'))
                console.log(messages)
                return messages
            }
        }
    
        return (
            <div className='appChatbotContainer' >
                <button onClick={handleOpenBot} className='appChatbotButton' label='bot'>
                    <CoBotAvatar/>
                </button>
                {
                    (isBotOpen === true) && (
                        <Chatbot
                            config={config}
                            actionProvider={ActionProvider}
                            messageHistory={loadMessages()}
                            messageParser={MessageParser}
                            saveMessages={saveMessages}
                        />
                    )
                }
            </div>
        )
    }

    // ActionProvider.js

    export const ActionProvider = ({createChatBotMessage, setState, children, rest}) => {
      const [content, setContent] = useState([])
      useEffect(() => {
        axios({
            method: "POST",
            url: window.location.origin+'/api/botanswers/',
            headers:
                    {
                        Authorization: localStorage.getItem('access_token'),
                        Group: localStorage.getItem('detailRole')
                    },
        }).then(response => {
            setContent(JSON.parse(response.data))
            console.log(JSON.parse(response.data))
        }).catch(error => {
            console.log('Error: ', error)
        })
      }, [])
      const greet = () => {
        const greetingMessage = this.createChatBotMessage("и тебе привет!")
        setState((prev) => ({
          ...prev,
          messages: [...prev.messages, greetingMessage],
        }));
      }
      const notUnderstand = () => {
        const notUnderstandMessage = createChatBotMessage('Извини, я не понимаю')
        setState((prev) => ({
          ...prev, messages: [...prev.messages, notUnderstandMessage],
        }))
      }
    
      const hiGreet = () => {
        const hiGreetingMessage = createChatBotMessage('о, вы англичанин? hello!')
        setState((prev) => ({
          ...prev,
          messages: [...prev.messages, hiGreetingMessage],
        }));
      }
    
      const handleQuestion = () => {
        const message = createChatBotMessage(
          "Выберите раздел, с которым связан ваш вопрос",
          {
            widget: "questionSections",
          }
        )
        setState((prev) => ({
          ...prev,
          messages: [...prev.messages, message],
        }));
      }
      return (
        <div>
          {React.Children.map(children, (child) => {
            return React.cloneElement(child, {
              actions: {
                greet,
                hiGreet,
                notUnderstand,
                handleQuestion,
              },
            });
          })}
        </div>
      )
    }


    // MessageParser.js

    export const MessageParser = ({actions, children}) => {
    
      const parse = (message) => {
        const lowerCaseMessage = message.toLowerCase()
        if (lowerCaseMessage.includes("привет")) {
          actions.greet();
        }
        else if (
            lowerCaseMessage.includes('hi') ||
            lowerCaseMessage.includes('hello')
           ) {
          actions.hiGreet();
        }
        else if (lowerCaseMessage.includes("вопрос")) {
          actions.handleQuestion();
        }
        else {
          actions.notUnderstand();
        }
      }
    
      return (
        <div>
          {React.Children.map(children, (child) => {
            return React.cloneElement(child, {
              parse: parse,
              actions,
            });
          })}
        </div>
      );
    }

    // config.js

    const config = {
        initialMessages: [
            createChatBotMessage("Привет! Я чат-бот Личного кабинета Заказчика. Чем я могу помочь?", {
                widget: "sectionSelection",
            }),
        ],
        customComponents: {
            botAvatar: (props) => <CoBotAvatar {...props} />,
            header: () => <div style={{ backgroundColor: '#2898ec', padding: '5px', font: 'revert', borderRadius: '5px' }}>
                            Ваш помощник в ЛК
                          </div>
        },
        customStyles: {
            botMessageBox: {
              backgroundColor: "#376B7E",
            },
            chatButton: {
              backgroundColor: "#376B7E",
            },
        },
        widgets: [
         {
         	widgetName: "sectionSelection",
         	widgetFunc: (props) => <SectionSelection {...props} />,
         },
         {
         	widgetName: "questionSections",
         	widgetFunc: (props) => <QuestionSections {...props} />,
         },
      ],
    }
    
    export default config