Переглянути джерело

fix profile update

pull/1/head
Jonathan Cobb 4 роки тому
джерело
коміт
a47aad65e5
3 змінених файлів з 69 додано та 51 видалено
  1. +2
    -3
      src/_store/users.module.js
  2. +0
    -4
      src/account/NewNetworkPage.vue
  3. +67
    -44
      src/account/ProfilePage.vue

+ 2
- 3
src/_store/users.module.js Переглянути файл

@@ -71,9 +71,8 @@ const mutations = {
// todo: add 'updating:true' property to user being updated
},
updateSuccess(state, user) {
// todo: why doesn't this work?
user.token = account.user.token; // preserve token
state.user = account.user = user;
user.token = account.state.user.token; // preserve token
state.user = account.state.user = user;
localStorage.setItem('user', JSON.stringify(user));
},
updateFailure(state, { id, error }) {


+ 0
- 4
src/account/NewNetworkPage.vue Переглянути файл

@@ -243,10 +243,6 @@
};
this.createNewNetwork(this.network);
}
} else {
console.log('handleSubmit: no payment info found');
// console.log('handleSubmit: paymentMethod='+JSON.stringify(this.paymentMethod));
if (this.paymentMethod) console.log('handleSubmit: paymentMethod.driverClass='+JSON.stringify(this.paymentMethod.driverClass));
}
});
}


+ 67
- 44
src/account/ProfilePage.vue Переглянути файл

@@ -3,47 +3,60 @@
<h2>Edit Profile</h2>
<form @submit.prevent="handleSubmit">
<div class="form-group">
<label for="name">Username</label>
<input type="text" v-model="name" name="name" class="form-control" :class="{ 'is-invalid': submitted && !name }" />
<div v-show="submitted && !name" class="invalid-feedback">Name is required</div>
<label for="name">{{messages.field_label_username}}</label>
<input type="text" v-model="user.name" v-validate="'required'" name="name" class="form-control" :class="{ 'is-invalid': submitted && errors.has('name') }" />
<div v-if="submitted && errors.has('name')" class="invalid-feedback">{{ errors.first('name') }}</div>
</div>
<div class="form-group">
<label htmlFor="url">Url</label>
<input type="text" v-model="url" name="url" class="form-control"/>
<label htmlFor="url">{{messages.field_label_url}}</label>
<input type="text" v-model="user.url" name="url" class="form-control"/>
<div v-if="submitted && errors.has('url')" class="invalid-feedback">{{ errors.first('url') }}</div>
</div>
<div class="form-group">
<label htmlFor="description">Description</label>
<input type="text" v-model="description" name="description" class="form-control"/>
<label htmlFor="description">{{messages.field_label_bio}}</label>
<input type="text" v-model="user.description" name="description" class="form-control"/>
<div v-if="submitted && errors.has('description')" class="invalid-feedback">{{ errors.first('description') }}</div>
</div>
<div class="form-group">
<label for="admin">Admin</label>
<input type="checkbox" id="admin" v-model="admin">

<div v-if="user.admin === true && currentUser.uuid !== user.uuid" class="form-group">
<label for="admin">{{messages.field_label_administrator}}</label>
<input type="checkbox" id="admin" v-model="user.admin">
<div v-if="submitted && errors.has('admin')" class="invalid-feedback">{{ errors.first('admin') }}</div>
</div>
<div class="form-group">
<label for="suspended">Suspended</label>
<input type="checkbox" id="suspended" v-model="suspended">
<div v-if="user.admin === true && currentUser.uuid === user.uuid" class="form-group">
<span>{{messages.field_label_administrator}}: {{messages['message_'+user.admin]}}</span>
</div>

<div v-if="user.admin === true && currentUser.uuid !== user.uuid" class="form-group">
<label for="suspended">{{messages.field_label_suspended}}</label>
<input type="checkbox" id="suspended" v-model="user.suspended">
<div v-if="submitted && errors.has('suspended')" class="invalid-feedback">{{ errors.first('suspended') }}</div>
</div>
<div v-if="user.admin === true && currentUser.uuid === user.uuid" class="form-group">
<span>{{messages.field_label_suspended}}: {{messages['message_'+user.suspended]}}</span>
</div>

<div>
<h3>Auto-Update Policy</h3>
<h3>{{messages.field_label_auto_update_policy}}</h3>
<div class="form-group">
<label for="autoUpdatePolicy.driverUpdates">Drivers</label>
<input type="checkbox" id="autoUpdatePolicy.driverUpdates" v-model="autoUpdatePolicy.driverUpdates">
<label for="autoUpdatePolicy.driverUpdates">{{messages.field_label_auto_update_drivers}}</label>
<input type="checkbox" id="autoUpdatePolicy.driverUpdates" v-model="user.autoUpdatePolicy.driverUpdates">
</div>
<div class="form-group">
<label for="autoUpdatePolicy.appUpdates">Apps</label>
<input type="checkbox" id="autoUpdatePolicy.appUpdates" v-model="autoUpdatePolicy.appUpdates">
<label for="autoUpdatePolicy.appUpdates">{{messages.field_label_auto_update_apps}}</label>
<input type="checkbox" id="autoUpdatePolicy.appUpdates" v-model="user.autoUpdatePolicy.appUpdates">
</div>
<div class="form-group">
<label for="autoUpdatePolicy.dataUpdates">App Data</label>
<input type="checkbox" id="autoUpdatePolicy.dataUpdates" v-model="autoUpdatePolicy.dataUpdates">
<label for="autoUpdatePolicy.dataUpdates">{{messages.field_label_auto_update_app_data}}</label>
<input type="checkbox" id="autoUpdatePolicy.dataUpdates" v-model="user.autoUpdatePolicy.dataUpdates">
</div>
<div class="form-group">
<label for="autoUpdatePolicy.newStuff">New Drivers/Apps</label>
<input type="checkbox" id="autoUpdatePolicy.newStuff" v-model="autoUpdatePolicy.newStuff">
<label for="autoUpdatePolicy.newStuff">{{messages.field_label_auto_update_new_drivers_and_apps}}</label>
<input type="checkbox" id="autoUpdatePolicy.newStuff" v-model="user.autoUpdatePolicy.newStuff">
</div>
</div>
<div class="form-group">
<button class="btn btn-primary" :disabled="status.updating">Update</button>
<button class="btn btn-primary" :disabled="status.updating">{{messages.button_label_update_profile}}</button>
<img v-show="status.updating" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///wAAAMLCwkJCQgAAAGJiYoKCgpKSkiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" />
</div>
</form>
@@ -53,41 +66,51 @@
<script>
import { mapState, mapActions } from 'vuex'
import { account } from '../_store/account.module'
import { currentUser } from '../_helpers'

export default {
data () {
if (this.$router.params && this.$router.params.uuid) {
return {
...this.loadUser($this.router.params.uuid),
submitted: false
}
}
return {
...currentUser(),
submitted: false
submitted: false,
user: {
autoUpdatePolicy: {}
}
};
},
computed: {
...mapState('account', ['status']),
...mapState('account', {
currentUser: state => state.user,
status: state => state.status
}),
...mapState('system', ['messages'])
},
created () {
this.user = this.currentUser;
},
beforeRouteUpdate (to, from, next) {
// react to route changes...
console.log('this.router.params.uuid='+this.router.params.uuid);
next();
},
methods: {
...mapActions('users', ['update', 'loadUser']),
handleSubmit (e) {
this.submitted = true;
const updatedProfile = {
uuid: this.uuid,
name: this.name,
url: this.url,
description: this.description,
admin: this.admin,
suspended: this.suspended,
autoUpdatePolicy: this.autoUpdatePolicy
uuid: this.user.uuid,
name: this.user.name,
url: this.user.url,
description: this.user.description,
admin: this.user.admin,
suspended: this.user.suspended,
autoUpdatePolicy: this.user.autoUpdatePolicy
};
if (this.name) {
this.update(updatedProfile, this.messages, this.errors);
}
this.submitted = true;
this.$validator.validate().then(valid => {
if (valid) {
this.update({user: updatedProfile, messages: this.messages, errors: this.errors});
} else {
console.log('invalid!');
}
});
}
}
};

Завантаження…
Відмінити
Зберегти