Fix change email & reset password buttons. Fix sorting of lists. Fixed admin checkbox bug

This commit is contained in:
John Lyon-Smith
2018-05-14 15:13:48 -07:00
parent 5b4798b196
commit f88bcbdf92
13 changed files with 60 additions and 45 deletions

View File

@@ -23,7 +23,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>20180514.0</string>
<string>20180514.1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSAppTransportSecurity</key>

View File

@@ -5109,9 +5109,9 @@
}
},
"react-form-binder": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.0.tgz",
"integrity": "sha512-ihqbA3sp8eOOvjN2cSWOC7pfK+ukuRW5+dgpbrDJKnH/wgJ0LSMaJg2d/lX8bc0XO7+KxRJi7mBdizvCT1qhgQ==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.1.tgz",
"integrity": "sha512-QOIO7dd6s+zvw6V3JdaWbuCKm6OwunOemuvR7ds98nnPoUXXZ3Fv4SLRGkt3GcI97a5PDlWvNAN/9qz571SHjA==",
"requires": {
"eventemitter3": "^2.0.3",
"prop-types": "^15.5.10",

View File

@@ -23,7 +23,7 @@
"eventemitter3": "^3.1.0",
"moment": "^2.22.1",
"react": "^16.3.2",
"react-form-binder": "^2.0.0",
"react-form-binder": "^2.0.1",
"react-native": "^0.55.4",
"react-native-fs": "^2.9.12",
"react-native-image-picker": "^0.26.7",

View File

@@ -1,6 +1,6 @@
export const versionInfo = {
version: '1.0.0',
fullVersion: '1.0.0-20180514.0',
fullVersion: '1.0.0-20180514.1',
title: 'Deighton AR System',
copyright: '© 2018, Kingston Software Solutions.',
supportEmail: 'support@kss.us.com',

View File

@@ -1,6 +1,6 @@
export const versionInfo = {
version: '1.0.0',
fullVersion: '1.0.0-20180514.0',
fullVersion: '1.0.0-20180514.1',
title: 'Deighton AR System',
copyright: '© 2018, Kingston Software Solutions.',
supportEmail: 'support@kss.us.com',

View File

@@ -18,7 +18,7 @@
minor: 0,
patch: 0,
build: 20180514,
revision: 0,
revision: 1,
sequence: 1,
tz: "America/Los_Angeles",
title: "Deighton AR System",

View File

@@ -14167,9 +14167,9 @@
}
},
"react-form-binder": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.0.tgz",
"integrity": "sha512-ihqbA3sp8eOOvjN2cSWOC7pfK+ukuRW5+dgpbrDJKnH/wgJ0LSMaJg2d/lX8bc0XO7+KxRJi7mBdizvCT1qhgQ==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.1.tgz",
"integrity": "sha512-QOIO7dd6s+zvw6V3JdaWbuCKm6OwunOemuvR7ds98nnPoUXXZ3Fv4SLRGkt3GcI97a5PDlWvNAN/9qz571SHjA==",
"requires": {
"eventemitter3": "^2.0.3",
"prop-types": "^15.5.10",

View File

@@ -12,7 +12,7 @@
"radium": "^0.22.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-form-binder": "^2.0.0",
"react-form-binder": "^2.0.1",
"react-router-dom": "^4.1.1",
"regexp-pattern": "^1.0.4",
"socket.io-client": "^2.0.3"

View File

@@ -16,7 +16,7 @@ export class MasterDetail extends Component {
updateItem: PropTypes.func.isRequired,
createItem: PropTypes.func.isRequired,
deleteItem: PropTypes.func.isRequired,
sort: PropTypes.func.isRequired,
listSort: PropTypes.func.isRequired,
detailCallbacks: PropTypes.object,
listData: PropTypes.func,
children: PropTypes.element,
@@ -44,7 +44,7 @@ export class MasterDetail extends Component {
this.props
.listItems()
.then((list) => {
this.setState({ items: list.items })
this.setState({ items: list.items.sort(this.props.listSort) })
const { history } = this.props
const search = new URLSearchParams(history.location.search)
@@ -68,10 +68,6 @@ export class MasterDetail extends Component {
})
}
get selectedItem() {
return this.state.selectedItem
}
@autobind
showWait(message) {
this.setState({
@@ -91,18 +87,22 @@ export class MasterDetail extends Component {
@autobind
showMessage(message, detail) {
this.setState({
messageModal: {
icon: "thumb",
message,
detail,
},
})
}
@autobind
showErrorMessage(message, detail) {
this.setState({
messageModal: {
icon: "hand",
message,
detail,
},
})
}
@@ -116,6 +116,18 @@ export class MasterDetail extends Component {
})
}
@autobind
hideYesNo() {
this.setState({
yesNoModal: null,
})
}
@autobind
getSelectedItem() {
return this.state.selectedItem
}
@autobind
removeUnfinishedNewItem() {
let items = this.state.items
@@ -178,7 +190,7 @@ export class MasterDetail extends Component {
this.setState({
items: this.state.items
.map((item) => (!item._id ? createdItem : item))
.sort(this.props.sort),
.sort(this.props.listSort),
modified: false,
selectedItem: createdItem,
})
@@ -231,9 +243,7 @@ export class MasterDetail extends Component {
}
}
this.setState({
yesNoModal: null,
})
this.hideYesNo()
}
@autobind
@@ -247,9 +257,7 @@ export class MasterDetail extends Component {
delete this.nextSelectedItem
}
this.setState({
yesNoModal: null,
})
this.hideYesNo()
}
@autobind
@@ -312,7 +320,7 @@ export class MasterDetail extends Component {
color: colorInfo.headerBorder,
}}
radius={sizeInfo.formBoxRadius}>
{this.state.selectedItem ? (
{selectedItem ? (
React.createElement(this.props.form, {
item: selectedItem,
onSave: this.handleSave,

View File

@@ -20,7 +20,7 @@ export class Teams extends Component {
updateItem={api.updateTeam}
createItem={api.createTeam}
deleteItem={api.deleteTeam}
sort={(a, b) => a.name.localeCompare(b.name)}
listSort={(a, b) => a.name.localeCompare(b.name)}
listData={(team) => ({
icon: "team",
text: team.name,

View File

@@ -57,9 +57,9 @@ export class UserForm extends React.Component {
isValid: true,
},
administrator: {
isValid: (r, v) => true,
initValue: false,
isDisabled: (r) => api.loggedInUser._id === r._id, // Adding a new user
isValid: true,
initValue: false,
alwaysGet: true,
},
remove: {
@@ -274,7 +274,7 @@ export class UserForm extends React.Component {
<BoundCheckbox
label={"Administrator"}
name="administrator"
binder={this.state.binder}
binder={binder}
/>
</Row.Item>
<Row.Item grow />

View File

@@ -21,20 +21,21 @@ export class Users extends Component {
@autobind
handleChangeEmail() {
this.setState({
changeEmailModal: { oldEmail: this.state.selectedUser.email },
changeEmailModal: { oldEmail: this.masterDetail.getSelectedItem().email },
})
}
@autobind
handleSendPasswordReset() {
const selectedItem = this.masterDetail.getSelectedItem()
this.setState({ waitModal: "Sending Password Reset Email..." })
api
.sendResetPassword(this.state.selectedUser.email)
.sendResetPassword(selectedItem.email)
.then(() => {
this.masterDetail.hideWait()
this.masterDetail.showMessage(
`An email has been sent to '${
this.masterDetail.selectedItem.email
selectedItem.email
}' with instructions on how to reset their password`
)
})
@@ -49,14 +50,17 @@ export class Users extends Component {
@autobind
handleResendEmail() {
const selectedItem = this.masterDetail.getSelectedItem()
this.masterDetail.showWait("Resending Email...")
api
.sendConfirmEmail({ existingEmail: this.masterDetail.selectedItem.email })
.sendConfirmEmail({
existingEmail: selectedItem.email,
})
.then(() => {
this.masterDetail.hideWait()
this.masterDetail.showMessage(
`An email has been sent to '${
this.masterDetail.selectedItem.email
selectedItem.email
}' with further instructions.`
)
})
@@ -78,10 +82,13 @@ export class Users extends Component {
this.setState({
waitModal: { message: "Requesting Email Change..." },
})
if (this.state.selectedUser) {
const selectedItem = this.masterDetail.getSelectedItem()
if (selectedItem) {
api
.sendConfirmEmail({
existingEmail: this.state.selectedUser.email,
existingEmail: selectedItem.email,
newEmail,
})
.then(() => {
@@ -116,7 +123,7 @@ export class Users extends Component {
onResendEmail: this.handleResendEmail,
onResetPassword: this.handleSendPasswordReset,
}}
sort={(a, b) => 0}
listSort={(a, b) => a.lastName.localeCompare(b.lastName)}
listData={(user) => ({
icon: user.administrator ? "admin" : "profile",
text: user.firstName + " " + user.lastName,

View File

@@ -1,6 +1,6 @@
export const versionInfo = {
version: '1.0.0',
fullVersion: '1.0.0-20180514.0',
fullVersion: '1.0.0-20180514.1',
title: 'Deighton AR System',
copyright: '© 2018, Kingston Software Solutions.',
supportEmail: 'support@kss.us.com',