From 0c374b11df1c4c728d2bc43d2c8226e688c90cf1 Mon Sep 17 00:00:00 2001 From: Stefani Meneghetti Date: Thu, 8 Sep 2022 15:42:09 -0300 Subject: [PATCH 1/2] feat: save and load Aura history --- resources/js/components/InputComponent.vue | 23 +++++- resources/js/components/MessageComponent.vue | 87 ++++++++++++++------ 2 files changed, 82 insertions(+), 28 deletions(-) diff --git a/resources/js/components/InputComponent.vue b/resources/js/components/InputComponent.vue index 3e9dc28..7f10271 100644 --- a/resources/js/components/InputComponent.vue +++ b/resources/js/components/InputComponent.vue @@ -30,7 +30,10 @@ export default { } this.disabled = true; - this.messages.push({id: this.messages.length + 1, message: this.inputMessage, source: "user"}) + let userMessage = {id: this.messages.length + 1, message: this.inputMessage, source: "user"}; + + this.messages.push(userMessage); + this.saveMessage(userMessage); var auraAnswer = { id: this.messages.length + 1, @@ -62,7 +65,8 @@ export default { } this.messages.push(auraAnswer) - this.disabled = false; + this.saveMessage(auraAnswer) + this.disabled = false; }).catch((error) => { if (error.response.status == 401) { auraAnswer.message = "Para poder conversar comigo você precisa estar autenticado(a). Por favor autentique-se:"; @@ -73,11 +77,24 @@ export default { auraAnswer.category = "aura_could_not_respond"; } this.messages.push(auraAnswer) + this.saveMessage(auraAnswer) this.disabled = false; }); - + this.inputMessage = ""; }, + saveMessage(message) { + axios({ + method: "POST", + url: "/v0/aura/chat/history/add-message", + headers: { + Authorization: `Bearer ${this.userToken}` + }, + data: { + "message": message + } + }); + } }, }; \ No newline at end of file diff --git a/resources/js/components/MessageComponent.vue b/resources/js/components/MessageComponent.vue index 13f97c5..024c0d8 100644 --- a/resources/js/components/MessageComponent.vue +++ b/resources/js/components/MessageComponent.vue @@ -1,34 +1,42 @@ \ No newline at end of file From 1c94a16caa5bfd2070a2658d3633386e2c74f3bc Mon Sep 17 00:00:00 2001 From: Stefani Meneghetti Date: Fri, 9 Sep 2022 09:03:49 -0300 Subject: [PATCH 2/2] feat: get jwt token from url --- app/Http/Livewire/AuraWidget.php | 106 +++++++++---------- resources/js/app.js | 15 +++ resources/js/components/InputComponent.vue | 15 ++- resources/js/components/MessageComponent.vue | 6 +- 4 files changed, 78 insertions(+), 64 deletions(-) diff --git a/app/Http/Livewire/AuraWidget.php b/app/Http/Livewire/AuraWidget.php index 4b531fa..c468b33 100644 --- a/app/Http/Livewire/AuraWidget.php +++ b/app/Http/Livewire/AuraWidget.php @@ -22,61 +22,61 @@ class AuraWidget extends Component public function mount() { - $this->messages[0] = ['id' => 1, - 'message' => 'Olá! Eu sou a AURA, uma assistente virtual desenvolvida pelo PRACTICE, converse comigo!', - 'source' => 'aura', - 'userMessage' => 'has_no_message', - 'assessed' => 2, - 'category' => 'welcome_message' - ]; + // $this->messages[0] = ['id' => 1, + // 'message' => 'Olá! Eu sou a AURA, uma assistente virtual desenvolvida pelo PRACTICE, converse comigo!', + // 'source' => 'aura', + // 'userMessage' => 'has_no_message', + // 'assessed' => 2, + // 'category' => 'welcome_message' + // ]; - $this->inputMessage = ''; - - $this->widgetSettings = [ - 'theme' => 'light', - 'type' => 'fullscreen', - 'history_loaded' => false, - 'display_agree_form' => false, - 'display_login_form' => false - ]; - - $this->user = [ - 'token' => request()->token, - 'id' => 0, - 'profile_pic' => '', - 'consent_status' => -1 // -1: not answered; 1: agreed, 0: disagreed - ]; - - if (request()->type == "button"){ - $this->widgetSettings['type'] = "button"; - } - if (request()->theme == "dark") { - $this->widgetSettings['theme'] = "dark"; - } - - if ($this->user['token'] != null) { - $request = Request::create('/v0/user/', 'GET'); - $request->headers->set('Authorization', 'Bearer '.$this->user['token']); - - $response = json_decode(app()->handle($request)->getContent()); + // $this->inputMessage = ''; + + // $this->widgetSettings = [ + // 'theme' => 'light', + // 'type' => 'fullscreen', + // 'history_loaded' => false, + // 'display_agree_form' => false, + // 'display_login_form' => false + // ]; + + // $this->user = [ + // 'token' => request()->token, + // 'id' => 0, + // 'profile_pic' => '', + // 'consent_status' => -1 // -1: not answered; 1: agreed, 0: disagreed + // ]; + + // if (request()->type == "button"){ + // $this->widgetSettings['type'] = "button"; + // } + // if (request()->theme == "dark") { + // $this->widgetSettings['theme'] = "dark"; + // } + + // if ($this->user['token'] != null) { + // $request = Request::create('/v0/user/', 'GET'); + // $request->headers->set('Authorization', 'Bearer '.$this->user['token']); + + // $response = json_decode(app()->handle($request)->getContent()); - if ($response != null) { - if (property_exists($response, 'error')) { - $this->user['token'] = null; - } else { - $this->user['id'] = $response->id; - $this->user['profile_pic'] = "https://cc.uffs.edu.br/avatar/iduffs/".$response->uid; - $consentStatus = AuraChatController::consentStatus($response->id)['aura_consent']; - $this->user['consent_status'] = $consentStatus == 1 ? $consentStatus : -1; - } - } else { - $this->user['token'] = null; - } - } - - $this->academicCalendar = [ - 'display-popup' => false - ]; + // if ($response != null) { + // if (property_exists($response, 'error')) { + // $this->user['token'] = null; + // } else { + // $this->user['id'] = $response->id; + // $this->user['profile_pic'] = "https://cc.uffs.edu.br/avatar/iduffs/".$response->uid; + // $consentStatus = AuraChatController::consentStatus($response->id)['aura_consent']; + // $this->user['consent_status'] = $consentStatus == 1 ? $consentStatus : -1; + // } + // } else { + // $this->user['token'] = null; + // } + // } + + // $this->academicCalendar = [ + // 'display-popup' => false + // ]; } public function render() diff --git a/resources/js/app.js b/resources/js/app.js index 51ee68a..f0e14d8 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -59,6 +59,7 @@ const app = new Vue({ mounted() { this.setTheme(this.userTheme); + this.getUserTokenFromUrl(); }, methods: { toggleTheme() { @@ -84,5 +85,19 @@ const app = new Vue({ return "light-theme"; } }, + getUserTokenFromUrl() { + const url = new URL(location.href); + const urlToken = url.searchParams.get('token'); + + axios({ + method: "GET", + url: "/v0/user/", + headers: { + Authorization: `Bearer ${urlToken}` + } + }).then(()=>{ + this.userToken = urlToken; + }).catch(e => console.error(e)); + } } }); diff --git a/resources/js/components/InputComponent.vue b/resources/js/components/InputComponent.vue index 7f10271..53ecd46 100644 --- a/resources/js/components/InputComponent.vue +++ b/resources/js/components/InputComponent.vue @@ -14,7 +14,6 @@ export default { data() { return { inputMessage: "", - userToken: this.usertoken, disabled: false, }; }, @@ -45,13 +44,13 @@ export default { }; var encodedMessage = encodeURIComponent(this.inputMessage); - var requestUrl = "/v0/aura/nlp/domain/" + encodedMessage + var requestUrl = "/v0/aura/nlp/domain/" + encodedMessage; axios({ method: "GET", url: requestUrl, headers: { - Authorization: `Bearer ${this.userToken}` + Authorization: `Bearer ${this.usertoken}` } }).then((response) => { const data = response.data; @@ -64,8 +63,8 @@ export default { auraAnswer.category = "aura_has_no_response"; } - this.messages.push(auraAnswer) - this.saveMessage(auraAnswer) + this.messages.push(auraAnswer); + this.saveMessage(auraAnswer); this.disabled = false; }).catch((error) => { if (error.response.status == 401) { @@ -76,8 +75,8 @@ export default { auraAnswer.message = "Algo de errado está acontecendo com meus servidores, bip bop."; auraAnswer.category = "aura_could_not_respond"; } - this.messages.push(auraAnswer) - this.saveMessage(auraAnswer) + this.messages.push(auraAnswer); + this.saveMessage(auraAnswer); this.disabled = false; }); @@ -88,7 +87,7 @@ export default { method: "POST", url: "/v0/aura/chat/history/add-message", headers: { - Authorization: `Bearer ${this.userToken}` + Authorization: `Bearer ${this.usertoken}` }, data: { "message": message diff --git a/resources/js/components/MessageComponent.vue b/resources/js/components/MessageComponent.vue index 024c0d8..ed402b0 100644 --- a/resources/js/components/MessageComponent.vue +++ b/resources/js/components/MessageComponent.vue @@ -46,7 +46,6 @@ export default { data() { return { msgs: this.message, - userToken: this.usertoken, assessing: false, loadedHistory: false }; @@ -64,7 +63,7 @@ export default { method: "POST", url: "/v0/analytics/", headers: { - "Authorization": `Bearer ${this.userToken}`, + "Authorization": `Bearer ${this.usertoken}`, "Content-Type": "application/json", }, data: { @@ -91,12 +90,13 @@ export default { method: "GET", url: "/v0/aura/chat/history", headers: { - Authorization: `Bearer ${this.userToken}` + Authorization: `Bearer ${this.usertoken}` } }).then((response) => { let data = response.data; this.msgs = data.aura_history.concat(this.msgs); this.toggleSpinner(); + this.$emit('update:message', this.msgs); }).catch(() => { this.msgs.unshift({id: this.msgs.length + 1, message: "Não foi possível carregar seu histórico de mensagens.", source: "aura"}); this.toggleSpinner();