From 4c6d70f2c6099cf82e57cf81418a1a02341f1492 Mon Sep 17 00:00:00 2001 From: sbosse Date: Mon, 21 Jul 2025 23:33:31 +0200 Subject: [PATCH] Mon 21 Jul 22:43:21 CEST 2025 --- .../cordova-plugin-contacts/www/contacts.js | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 js/ui/cordova/plugins/cordova-plugin-contacts/www/contacts.js diff --git a/js/ui/cordova/plugins/cordova-plugin-contacts/www/contacts.js b/js/ui/cordova/plugins/cordova-plugin-contacts/www/contacts.js new file mode 100644 index 0000000..178a20a --- /dev/null +++ b/js/ui/cordova/plugins/cordova-plugin-contacts/www/contacts.js @@ -0,0 +1,98 @@ +/* + * + * 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 argscheck = require('cordova/argscheck'), + exec = require('cordova/exec'), + ContactError = require('./ContactError'), + utils = require('cordova/utils'), + Contact = require('./Contact'), + fieldType = require('./ContactFieldType'); + + +/** +* Represents a group of Contacts. +* @constructor +*/ +var contacts = { + fieldType: fieldType, + /** + * Returns an array of Contacts matching the search criteria. + * @param fields that should be searched + * @param successCB success callback + * @param errorCB error callback + * @param {ContactFindOptions} options that can be applied to contact searching + * @return array of Contacts matching search criteria + */ + find:function(fields, successCB, errorCB, options) { + argscheck.checkArgs('afFO', 'contacts.find', arguments); + if (!fields.length) { + errorCB && errorCB(new ContactError(ContactError.INVALID_ARGUMENT_ERROR)); + } else { + // missing 'options' param means return all contacts + options = options || {filter: '', multiple: true} + var win = function(result) { + var cs = []; + for (var i = 0, l = result.length; i < l; i++) { + cs.push(contacts.create(result[i])); + } + successCB(cs); + }; + exec(win, errorCB, "Contacts", "search", [fields, options]); + } + }, + + /** + * This function picks contact from phone using contact picker UI + * @returns new Contact object + */ + pickContact: function (successCB, errorCB) { + + argscheck.checkArgs('fF', 'contacts.pick', arguments); + + var win = function (result) { + // if Contacts.pickContact return instance of Contact object + // don't create new Contact object, use current + var contact = result instanceof Contact ? result : contacts.create(result); + successCB(contact); + }; + exec(win, errorCB, "Contacts", "pickContact", []); + }, + + /** + * This function creates a new contact, but it does not persist the contact + * to device storage. To persist the contact to device storage, invoke + * contact.save(). + * @param properties an object whose properties will be examined to create a new Contact + * @returns new Contact object + */ + create:function(properties) { + argscheck.checkArgs('O', 'contacts.create', arguments); + var contact = new Contact(); + for (var i in properties) { + if (typeof contact[i] !== 'undefined' && properties.hasOwnProperty(i)) { + contact[i] = properties[i]; + } + } + return contact; + } +}; + +module.exports = contacts;