diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 35771f1..68307ed 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -7,7 +7,6 @@
-
@@ -48,7 +47,7 @@
-
+
1597348071361
@@ -239,7 +238,14 @@
1597578975715
-
+
+ 1597584801023
+
+
+
+ 1597584801023
+
+
@@ -259,17 +265,18 @@
-
+
+
-
+
-
+
@@ -286,18 +293,18 @@
-
+
-
+
-
+
-
+
diff --git a/app.js b/app.js
index dfd3535..fd0a803 100644
--- a/app.js
+++ b/app.js
@@ -5,6 +5,8 @@ let kara = new Vue({
name: 'Kara',
chatbox: null,
isTyping: false,
+ askedForName: false,
+ username: '',
addModal: {
includeAll: false,
keywords: '',
@@ -38,15 +40,21 @@ let kara = new Vue({
]
},
mounted() {
- if (this.getSavedData() === false) {
+ this.getSavedData();
+
+ if (!this.username) {
this.initialGreeting();
- // Todo: add method to ask for and save username
+ this.askForName();
+
+ this.isTyping = false;
} else {
this.welcomeBack();
}
document.getElementById('chatinput').focus();
document.title = this.name;
+
+ this.scrollDown();
},
methods: {
addMessage(body, ai) {
@@ -109,15 +117,14 @@ let kara = new Vue({
this.isTyping = true;
setTimeout(() => {
- this.isTyping = false;
- document.getElementById('chatinput').focus();
- }, 2500);
-
- setTimeout(() => {
- let answer = this.getAnswer(message);
- console.log(answer);
+ if (this.askedForName === true) {
+ this.setName(message)
+ } else {
+ let answer = this.getAnswer(message);
+ this.aiMessage(answer);
+ }
- this.aiMessage(answer);
+ this.isTyping = false;
this.scrollDown();
}, 3000);
},
@@ -189,6 +196,11 @@ let kara = new Vue({
let phrases = message.split(' ');
let answer = undefined;
+ if (this.includesAllOf(phrases, ['change', 'my', 'name'])) {
+ this.askedForName = true;
+ return "Please tell me how i should call you.";
+ }
+
this.answers.forEach((answerOption) => {
if (answerOption.includeAll === true) {
if (
@@ -234,17 +246,17 @@ let kara = new Vue({
},
updateStorage() {
localStorage.setItem('name', this.name);
+ localStorage.setItem('username', this.username);
localStorage.setItem('messages', JSON.stringify(this.messages));
localStorage.setItem('answers', JSON.stringify(this.answers));
},
getSavedData() {
- let savedName = localStorage.getItem('name')
+ let savedName = localStorage.getItem('name');
- if (savedName === '') {
- return false;
- }
+ this.name = savedName ? savedName : this.name;
- this.name = localStorage.getItem('name');
+ let savedUsername = localStorage.getItem('username');
+ this.username = savedUsername ? savedUsername : null;
let savedMessages = JSON.parse(localStorage.getItem('messages'));
this.messages = savedMessages ? savedMessages : [];
@@ -253,6 +265,31 @@ let kara = new Vue({
this.answers = savedAnswers ? savedAnswers : this.answers;
this.scrollDown();
+ },
+ askForName() {
+ this.aiMessage(
+ this.oneOf([
+ 'May i ask for your name?',
+ 'Whats your name? :)',
+ 'How can i call you?',
+ 'How did your developers call you? :)'
+ ])
+ );
+
+ this.askedForName = true;
+ },
+ setName(message) {
+ this.username = message.trim();
+ this.updateStorage();
+ this.askedForName = false;
+
+ this.aiMessage(
+ this.oneOf([
+ "That's a beautiful name!",
+ "Okay, i'll call you " + this.username + " from now on :)",
+ "Nice to meet you, " + this.username + ". :D"
+ ])
+ )
}
}
})
\ No newline at end of file