feedback feature
This commit is contained in:
parent
aa887dfc5e
commit
b64e80478e
14 changed files with 344 additions and 3 deletions
22
src/js/controllers/feedback/rateAppStore.js
Normal file
22
src/js/controllers/feedback/rateAppStore.js
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.controllers').controller('rateAppStoreController', function($scope, $state, $stateParams) {
|
||||
$scope.score = parseInt($stateParams.score);
|
||||
|
||||
$scope.skip = function() {
|
||||
$state.go('feedback.thanks', {
|
||||
score: $scope.score,
|
||||
skip: true
|
||||
});
|
||||
};
|
||||
|
||||
$scope.sendFeedback = function() {
|
||||
$state.go('feedback.sendFeedback', {
|
||||
score: $scope.score
|
||||
});
|
||||
};
|
||||
|
||||
$scope.goAppStore = function() {
|
||||
|
||||
};
|
||||
});
|
||||
42
src/js/controllers/feedback/sendFeedback.js
Normal file
42
src/js/controllers/feedback/sendFeedback.js
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.controllers').controller('sendFeedbackController', function($scope, $state, $timeout, $stateParams, gettextCatalog) {
|
||||
$scope.score = parseInt($stateParams.score);
|
||||
switch ($scope.score) {
|
||||
case 1:
|
||||
$scope.reaction = gettextCatalog.getString("Ouch!");
|
||||
$scope.comment = gettextCatalog.getString("There's obviously something we're doing wrong. Is there anything we could do to improve your experience?");
|
||||
break;
|
||||
case 2:
|
||||
$scope.reaction = gettextCatalog.getString("Oh no!");
|
||||
$scope.comment = gettextCatalog.getString("There's obviously something we're doing wrong. Is there anything we could do to improve your experience?");
|
||||
break;
|
||||
case 3:
|
||||
$scope.reaction = gettextCatalog.getString("Thanks!");
|
||||
$scope.comment = gettextCatalog.getString("We're always looking for ways to improve BitPay wallet. Is there anything we could do to improve your experience?");
|
||||
break;
|
||||
case 4:
|
||||
$scope.reaction = gettextCatalog.getString("Thanks!");
|
||||
$scope.comment = gettextCatalog.getString("That's exciting to hear. We'd love to earn that fifth star from you - how could we improve your experience?");
|
||||
break;
|
||||
case 5:
|
||||
$scope.reaction = gettextCatalog.getString("Feedback!");
|
||||
$scope.comment = gettextCatalog.getString("We're always looking for ways to improve BitPay wallet. Is there anything we could do to improve your experience?");
|
||||
break;
|
||||
}
|
||||
|
||||
$scope.sendFeedback = function() {
|
||||
//Feedback entered in feedback flow should be sent to BWS, and BWS should send a plain-text email to feedback@bitpay.com with a reply-to going to the user's email address. (From the onboarding process)
|
||||
$state.go('feedback.thanks', {
|
||||
score: $stateParams.score
|
||||
});
|
||||
};
|
||||
|
||||
$scope.skip = function() {
|
||||
$state.go('feedback.thanks', {
|
||||
score: $scope.score,
|
||||
skip: true
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
6
src/js/controllers/feedback/thanks.js
Normal file
6
src/js/controllers/feedback/thanks.js
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('copayApp.controllers').controller('thanksController', function($scope, $state, $stateParams) {
|
||||
$scope.score = parseInt($stateParams.score);
|
||||
$scope.skip = $stateParams.skip && $scope.score == 5;
|
||||
});
|
||||
|
|
@ -39,6 +39,41 @@ angular.module('copayApp.controllers').controller('tabHomeController',
|
|||
externalLinkService.open(url, optIn, title, message, okText, cancelText);
|
||||
};
|
||||
|
||||
$scope.setScore = function(score) {
|
||||
$scope.score = score;
|
||||
switch ($scope.score) {
|
||||
case 1:
|
||||
$scope.button_title = gettextCatalog.getString("I think this app is terrible");
|
||||
break;
|
||||
case 2:
|
||||
$scope.button_title = gettextCatalog.getString("I don't like it");
|
||||
break;
|
||||
case 3:
|
||||
$scope.button_title = gettextCatalog.getString("Meh - it's alright");
|
||||
break;
|
||||
case 4:
|
||||
$scope.button_title = gettextCatalog.getString("I like the app");
|
||||
break;
|
||||
case 5:
|
||||
$scope.button_title = gettextCatalog.getString("This app is fantastic");
|
||||
break;
|
||||
}
|
||||
$timeout(function() {
|
||||
$scope.$apply();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.goFeedbackFlow = function() {
|
||||
if ($scope.score != 5)
|
||||
$state.go('feedback.sendFeedback', {
|
||||
score: $scope.score
|
||||
});
|
||||
else
|
||||
$state.go('feedback.rateAppStore', {
|
||||
score: $scope.score
|
||||
});
|
||||
};
|
||||
|
||||
$scope.openNotificationModal = function(n) {
|
||||
wallet = profileService.getWallet(n.walletId);
|
||||
|
||||
|
|
|
|||
|
|
@ -720,13 +720,50 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
|
|||
},
|
||||
})
|
||||
|
||||
|
||||
/*
|
||||
*
|
||||
* Buy or Sell Bitcoin
|
||||
* Feedback
|
||||
*
|
||||
*/
|
||||
|
||||
.state('feedback', {
|
||||
url: '/feedback',
|
||||
abstract: true,
|
||||
template: '<ion-nav-view name="feedback"></ion-nav-view>'
|
||||
})
|
||||
.state('feedback.sendFeedback', {
|
||||
url: '/sendFeedback/:score',
|
||||
views: {
|
||||
'feedback': {
|
||||
controller: 'sendFeedbackController',
|
||||
templateUrl: 'views/feedback/sendFeedback.html'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('feedback.thanks', {
|
||||
url: '/thanks/:score/:skip',
|
||||
views: {
|
||||
'feedback': {
|
||||
controller: 'thanksController',
|
||||
templateUrl: 'views/feedback/thanks.html'
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('feedback.rateAppStore', {
|
||||
url: '/rateAppStore/:score',
|
||||
views: {
|
||||
'feedback': {
|
||||
controller: 'rateAppStoreController',
|
||||
templateUrl: 'views/feedback/rateAppStore.html'
|
||||
}
|
||||
}
|
||||
})
|
||||
/*
|
||||
*
|
||||
* Buy or Sell Bitcoin
|
||||
*
|
||||
*/
|
||||
|
||||
.state('tabs.buyandsell', {
|
||||
url: '/buyandsell',
|
||||
views: {
|
||||
|
|
@ -992,7 +1029,7 @@ angular.module('copayApp').config(function(historicLogProvider, $provide, $logPr
|
|||
profileService.storeProfileIfDirty();
|
||||
$log.debug('Profile loaded ... Starting UX.');
|
||||
scannerService.gentleInitialize();
|
||||
$state.go('tabs.home');
|
||||
// $state.go('tabs.home');
|
||||
}
|
||||
|
||||
// After everything have been loaded, initialize handler URL
|
||||
|
|
|
|||
12
src/sass/views/feedback/rateAppStore.scss
Normal file
12
src/sass/views/feedback/rateAppStore.scss
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#rate-app-store {
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: $dark-gray;
|
||||
margin: 20px 10px;
|
||||
text-align: center;
|
||||
}
|
||||
.subtitle {
|
||||
padding: 10px 30px 20px 40px;
|
||||
}
|
||||
}
|
||||
33
src/sass/views/feedback/sendFeedBack.scss
Normal file
33
src/sass/views/feedback/sendFeedBack.scss
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#send-feedback {
|
||||
background-color: #fff;
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: $dark-gray;
|
||||
margin: 20px 10px;
|
||||
}
|
||||
.star {
|
||||
margin: 20px 0px;
|
||||
}
|
||||
a {
|
||||
font-size: 25px;
|
||||
padding: 12px;
|
||||
.gold {
|
||||
color: #ffd700 !important;
|
||||
}
|
||||
.grey {
|
||||
color: #667 !important;
|
||||
}
|
||||
}
|
||||
.comment {
|
||||
padding: 20px;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5em;
|
||||
font-weight: 300;
|
||||
color: $dark-gray;
|
||||
}
|
||||
textarea {
|
||||
padding: 10px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
12
src/sass/views/feedback/thanks.scss
Normal file
12
src/sass/views/feedback/thanks.scss
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#thanks-feedback {
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: $dark-gray;
|
||||
margin: 20px 10px;
|
||||
text-align: center;
|
||||
}
|
||||
.subtitle {
|
||||
padding: 10px 30px 20px 40px;
|
||||
}
|
||||
}
|
||||
|
|
@ -116,6 +116,23 @@
|
|||
font-size: 20px;
|
||||
margin-left: 10px;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
.starts {
|
||||
display: flex;
|
||||
border-bottom: none;
|
||||
.button {
|
||||
background-color: #fff;
|
||||
width: 100%;
|
||||
}
|
||||
.gold {
|
||||
color: #ffd700 !important;
|
||||
}
|
||||
.grey {
|
||||
color: #667 !important;
|
||||
}
|
||||
}
|
||||
.continue-button {
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@
|
|||
@import "wallet-backup-phrase";
|
||||
@import "zero-state";
|
||||
@import "onboarding/onboarding";
|
||||
@import "feedback/sendFeedback";
|
||||
@import "feedback/thanks";
|
||||
@import "feedback/rateAppStore";
|
||||
@import "includes/actionSheet";
|
||||
@import "export";
|
||||
@import "import";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue