Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
94c2d89247
commit
3a4978b892
228
js/ui/cordova/plugins/cordova-plugin-contacts/src/blackberry10/contactUtils.js
vendored
Normal file
228
js/ui/cordova/plugins/cordova-plugin-contacts/src/blackberry10/contactUtils.js
vendored
Normal file
|
@ -0,0 +1,228 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
var self,
|
||||||
|
ContactFindOptions = require("./ContactFindOptions"),
|
||||||
|
ContactError = require("./ContactError"),
|
||||||
|
ContactName = require("./ContactName"),
|
||||||
|
ContactOrganization = require("./ContactOrganization"),
|
||||||
|
ContactAddress = require("./ContactAddress"),
|
||||||
|
ContactField = require("./ContactField"),
|
||||||
|
contactConsts = require("./contactConsts"),
|
||||||
|
ContactPhoto = require("./ContactPhoto"),
|
||||||
|
ContactNews = require("./ContactNews"),
|
||||||
|
ContactActivity = require("./ContactActivity");
|
||||||
|
|
||||||
|
function populateFieldArray(contactProps, field, ClassName) {
|
||||||
|
if (contactProps[field]) {
|
||||||
|
var list = [],
|
||||||
|
obj;
|
||||||
|
|
||||||
|
contactProps[field].forEach(function (args) {
|
||||||
|
if (ClassName === ContactField) {
|
||||||
|
list.push(new ClassName(args.type, args.value));
|
||||||
|
} else if (ClassName === ContactPhoto) {
|
||||||
|
obj = new ContactPhoto(args.originalFilePath, args.pref);
|
||||||
|
obj.largeFilePath = args.largeFilePath;
|
||||||
|
obj.smallFilePath = args.smallFilePath;
|
||||||
|
list.push(obj);
|
||||||
|
} else if (ClassName === ContactNews) {
|
||||||
|
obj = new ContactNews(args);
|
||||||
|
list.push(obj);
|
||||||
|
} else if (ClassName === ContactActivity) {
|
||||||
|
obj = new ContactActivity(args);
|
||||||
|
list.push(obj);
|
||||||
|
} else {
|
||||||
|
list.push(new ClassName(args));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
contactProps[field] = list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function populateDate(contactProps, field) {
|
||||||
|
if (contactProps[field]) {
|
||||||
|
contactProps[field] = new Date(contactProps[field]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateFindArguments(findOptions) {
|
||||||
|
var error = false;
|
||||||
|
|
||||||
|
// findOptions is mandatory
|
||||||
|
if (!findOptions) {
|
||||||
|
error = true;
|
||||||
|
} else {
|
||||||
|
// findOptions.filter is optional
|
||||||
|
if (findOptions.filter) {
|
||||||
|
findOptions.filter.forEach(function (f) {
|
||||||
|
switch (f.fieldName) {
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_GIVEN_NAME:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_FAMILY_NAME:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_ORGANIZATION_NAME:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_PHONE:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_EMAIL:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_BBMPIN:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_LINKEDIN:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_TWITTER:
|
||||||
|
case ContactFindOptions.SEARCH_FIELD_VIDEO_CHAT:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!f.fieldValue) {
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
//findOptions.limit is optional
|
||||||
|
if (findOptions.limit) {
|
||||||
|
if (typeof findOptions.limit !== "number") {
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//findOptions.favorite is optional
|
||||||
|
if (findOptions.favorite) {
|
||||||
|
if (typeof findOptions.favorite !== "boolean") {
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// findOptions.sort is optional
|
||||||
|
if (!error && findOptions.sort && Array.isArray(findOptions.sort)) {
|
||||||
|
findOptions.sort.forEach(function (s) {
|
||||||
|
switch (s.fieldName) {
|
||||||
|
case ContactFindOptions.SORT_FIELD_GIVEN_NAME:
|
||||||
|
case ContactFindOptions.SORT_FIELD_FAMILY_NAME:
|
||||||
|
case ContactFindOptions.SORT_FIELD_ORGANIZATION_NAME:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s.desc === undefined || typeof s.desc !== "boolean") {
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!error && findOptions.includeAccounts) {
|
||||||
|
if (!Array.isArray(findOptions.includeAccounts)) {
|
||||||
|
error = true;
|
||||||
|
} else {
|
||||||
|
findOptions.includeAccounts.forEach(function (acct) {
|
||||||
|
if (!error && (!acct.id || window.isNaN(window.parseInt(acct.id, 10)))) {
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!error && findOptions.excludeAccounts) {
|
||||||
|
if (!Array.isArray(findOptions.excludeAccounts)) {
|
||||||
|
error = true;
|
||||||
|
} else {
|
||||||
|
findOptions.excludeAccounts.forEach(function (acct) {
|
||||||
|
if (!error && (!acct.id || window.isNaN(window.parseInt(acct.id, 10)))) {
|
||||||
|
error = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return !error;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateContactsPickerFilter(filter) {
|
||||||
|
var isValid = true,
|
||||||
|
availableFields = {};
|
||||||
|
|
||||||
|
if (typeof(filter) === "undefined") {
|
||||||
|
isValid = false;
|
||||||
|
} else {
|
||||||
|
if (filter && Array.isArray(filter)) {
|
||||||
|
availableFields = contactConsts.getKindAttributeMap();
|
||||||
|
filter.forEach(function (e) {
|
||||||
|
isValid = isValid && Object.getOwnPropertyNames(availableFields).reduce(
|
||||||
|
function (found, key) {
|
||||||
|
return found || availableFields[key] === e;
|
||||||
|
}, false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return isValid;
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateContactsPickerOptions(options) {
|
||||||
|
var isValid = false,
|
||||||
|
mode = options.mode;
|
||||||
|
|
||||||
|
if (typeof(options) === "undefined") {
|
||||||
|
isValid = false;
|
||||||
|
} else {
|
||||||
|
isValid = mode === ContactPickerOptions.MODE_SINGLE || mode === ContactPickerOptions.MODE_MULTIPLE || mode === ContactPickerOptions.MODE_ATTRIBUTE;
|
||||||
|
|
||||||
|
// if mode is attribute, fields must be defined
|
||||||
|
if (mode === ContactPickerOptions.MODE_ATTRIBUTE && !validateContactsPickerFilter(options.fields)) {
|
||||||
|
isValid = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return isValid;
|
||||||
|
}
|
||||||
|
|
||||||
|
self = module.exports = {
|
||||||
|
populateContact: function (contact) {
|
||||||
|
if (contact.name) {
|
||||||
|
contact.name = new ContactName(contact.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
populateFieldArray(contact, "addresses", ContactAddress);
|
||||||
|
populateFieldArray(contact, "organizations", ContactOrganization);
|
||||||
|
populateFieldArray(contact, "emails", ContactField);
|
||||||
|
populateFieldArray(contact, "phoneNumbers", ContactField);
|
||||||
|
populateFieldArray(contact, "faxNumbers", ContactField);
|
||||||
|
populateFieldArray(contact, "pagerNumbers", ContactField);
|
||||||
|
populateFieldArray(contact, "ims", ContactField);
|
||||||
|
populateFieldArray(contact, "socialNetworks", ContactField);
|
||||||
|
populateFieldArray(contact, "urls", ContactField);
|
||||||
|
populateFieldArray(contact, "photos", ContactPhoto);
|
||||||
|
populateFieldArray(contact, "news", ContactNews);
|
||||||
|
populateFieldArray(contact, "activities", ContactActivity);
|
||||||
|
// TODO categories
|
||||||
|
|
||||||
|
populateDate(contact, "birthday");
|
||||||
|
populateDate(contact, "anniversary");
|
||||||
|
},
|
||||||
|
invokeErrorCallback: function (errorCallback, code) {
|
||||||
|
if (errorCallback) {
|
||||||
|
errorCallback(new ContactError(code));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
validateFindArguments: validateFindArguments,
|
||||||
|
validateContactsPickerFilter: validateContactsPickerFilter,
|
||||||
|
validateContactsPickerOptions: validateContactsPickerOptions
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user