131 lines
2.9 KiB
JavaScript
131 lines
2.9 KiB
JavaScript
import { MESSAGE_TYPE, MESSAGE_STATUS, CONTACT_TYPE } from "utils/constant";
|
|
import { error } from "utils";
|
|
import { isPlainObject } from "utils/validate";
|
|
|
|
const constraintContactBasic = data =>
|
|
constraintObject(data, {
|
|
id: true,
|
|
displayName: true,
|
|
avatar: true,
|
|
type: {
|
|
required: true,
|
|
has: CONTACT_TYPE
|
|
}
|
|
});
|
|
const constraintMessageBasic = data =>
|
|
constraintObject(data, {
|
|
content: true,
|
|
sendTime: true,
|
|
type: {
|
|
required: true,
|
|
has: MESSAGE_TYPE
|
|
}
|
|
});
|
|
|
|
// constraintContact({
|
|
// id: "123",
|
|
// displayName: "123asd",
|
|
// avatar: "123",
|
|
// type: "single",
|
|
// message: {
|
|
// unread: 0,
|
|
// sendTime: 12312312,
|
|
// content: "12312312",
|
|
// type: "image"
|
|
// }
|
|
// });
|
|
|
|
constraintContact({
|
|
id: "123",
|
|
displayName: "123asd",
|
|
avatar: "123",
|
|
type: "single",
|
|
unread: 0,
|
|
lastSendTime: "",
|
|
subText: "12312312"
|
|
// message: {
|
|
// unread: 0,
|
|
// sendTime: 12312312,
|
|
// content: "12312312",
|
|
// type: "image"
|
|
// }
|
|
});
|
|
|
|
// constraintRecentContact({
|
|
// fromContactId: 0,
|
|
// unread: 0,
|
|
// sendTime: 12312312,
|
|
// content: "12312312"
|
|
// });
|
|
|
|
constraintMessage({
|
|
id: "123",
|
|
status: "succeed",
|
|
type: "image",
|
|
sendTime: 12312312312,
|
|
content: "asdas",
|
|
fromContactId: "123",
|
|
fromUser: { id: "123", displayName: "123", avatar: "123", type: "single" }
|
|
});
|
|
export function constraintObject(data, options) {
|
|
if (!data || !isPlainObject(data)) {
|
|
error("argument must be an object");
|
|
}
|
|
Object.keys(options).forEach(k => {
|
|
const option = options[k];
|
|
const val = data[k];
|
|
if ((option === true || option.required === true) && val === undefined) {
|
|
error(`"${k}" cannot be "${val}" `);
|
|
} else if (option.has && !option.has.includes(val)) {
|
|
error(
|
|
`"${k}" cannot be "${val}",can only be the following data "${
|
|
option.has
|
|
}"`
|
|
);
|
|
}
|
|
});
|
|
return true;
|
|
}
|
|
|
|
// export function constraintRecentContact(data) {
|
|
// constraintContact(data);
|
|
// constraintMessageBasic(data.message);
|
|
// constraintObject(data, {
|
|
// unread: true
|
|
// });
|
|
// }
|
|
export function constraintContact(data) {
|
|
constraintContactBasic(data);
|
|
// constraintObject(data, {
|
|
// unread: true,
|
|
// lastSendTime: true,
|
|
// lastContent: true
|
|
// });
|
|
}
|
|
export function constraintMessage(data) {
|
|
constraintObject(data, {
|
|
status: {
|
|
required: true,
|
|
has: MESSAGE_STATUS
|
|
},
|
|
fromContactId: true
|
|
});
|
|
constraintMessageBasic(data);
|
|
constraintContactBasic(data.fromUser);
|
|
let options = {};
|
|
switch (data.type) {
|
|
case "file":
|
|
options = {
|
|
fileSize: true,
|
|
fileName: true
|
|
};
|
|
break;
|
|
case "text":
|
|
options = {
|
|
text: true
|
|
};
|
|
break;
|
|
}
|
|
constraintObject(data, options);
|
|
}
|