Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
04db300110
commit
8fedf43478
121
js/ui/cordova/plugins/cordova-plugin-contacts/src/windows8/ContactProxy.js
vendored
Normal file
121
js/ui/cordova/plugins/cordova-plugin-contacts/src/windows8/ContactProxy.js
vendored
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* 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 ContactField = require('./ContactField'),
|
||||||
|
ContactAddress = require('./ContactAddress'),
|
||||||
|
ContactName = require('./ContactName'),
|
||||||
|
Contact = require('./Contact');
|
||||||
|
|
||||||
|
|
||||||
|
function convertToContact(windowsContact) {
|
||||||
|
var contact = new Contact();
|
||||||
|
|
||||||
|
// displayName & nickname
|
||||||
|
contact.displayName = windowsContact.name;
|
||||||
|
contact.nickname = windowsContact.name;
|
||||||
|
|
||||||
|
// name
|
||||||
|
contact.name = new ContactName(windowsContact.name);
|
||||||
|
|
||||||
|
// phoneNumbers
|
||||||
|
contact.phoneNumbers = [];
|
||||||
|
for (var i = 0; i < windowsContact.phoneNumbers.size; i++) {
|
||||||
|
var phone = new ContactField(windowsContact.phoneNumbers[i].category, windowsContact.phoneNumbers[i].value);
|
||||||
|
contact.phoneNumbers.push(phone);
|
||||||
|
}
|
||||||
|
|
||||||
|
// emails
|
||||||
|
contact.emails = [];
|
||||||
|
for (var i = 0; i < windowsContact.emails.size; i++) {
|
||||||
|
var email = new ContactField(windowsContact.emails[i].category, windowsContact.emails[i].value);
|
||||||
|
contact.emails.push(email);
|
||||||
|
}
|
||||||
|
|
||||||
|
// addressres
|
||||||
|
contact.addresses = [];
|
||||||
|
for (var i = 0; i < windowsContact.locations.size; i++) {
|
||||||
|
var address = new ContactAddress(null, windowsContact.locations[i].category,
|
||||||
|
windowsContact.locations[i].unstructuredAddress, windowsContact.locations[i].street,
|
||||||
|
null, windowsContact.locations[i].region, windowsContact.locations[i].postalCode,
|
||||||
|
windowsContact.locations[i].country);
|
||||||
|
contact.addresses.push(address);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ims
|
||||||
|
contact.ims = [];
|
||||||
|
for (var i = 0; i < windowsContact.instantMessages.size; i++) {
|
||||||
|
var im = new ContactField(windowsContact.instantMessages[i].category, windowsContact.instantMessages[i].userName);
|
||||||
|
contact.ims.push(im);
|
||||||
|
}
|
||||||
|
|
||||||
|
return contact;
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
pickContact: function(win, fail, args) {
|
||||||
|
|
||||||
|
var picker = new Windows.ApplicationModel.Contacts.ContactPicker();
|
||||||
|
picker.selectionMode = Windows.ApplicationModel.Contacts.ContactSelectionMode.contacts; // select entire contact
|
||||||
|
|
||||||
|
// pickContactAsync is available on Windows 8.1 or later, instead of
|
||||||
|
// pickSingleContactAsync, which is deprecated after Windows 8,
|
||||||
|
// so try to use newer method, if available.
|
||||||
|
// see http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.contacts.contactpicker.picksinglecontactasync.aspx
|
||||||
|
if (picker.pickContactAsync) {
|
||||||
|
// TODO: 8.1 has better contact support via the 'Contact' object
|
||||||
|
} else {
|
||||||
|
|
||||||
|
function success(con) {
|
||||||
|
// if contact was not picked
|
||||||
|
if (!con) {
|
||||||
|
fail && setTimeout(function() {
|
||||||
|
fail(new Error("User did not pick a contact."));
|
||||||
|
}, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// send em back
|
||||||
|
win(convertToContact(con));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
picker.pickSingleContactAsync().done(success, fail);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
save:function(win,fail,args){
|
||||||
|
console && console.error && console.error("Error : Windows 8 does not support creating/saving contacts");
|
||||||
|
fail && setTimeout(function () {
|
||||||
|
fail(new Error("Contact create/save not supported on Windows 8"));
|
||||||
|
}, 0);
|
||||||
|
},
|
||||||
|
|
||||||
|
search: function(win, fail, args) {
|
||||||
|
console && console.error && console.error("Error : Windows 8 does not support searching contacts");
|
||||||
|
fail && setTimeout(function() {
|
||||||
|
fail(new Error("Contact search not supported on Windows 8"));
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
require("cordova/exec/proxy").add("Contacts", module.exports);
|
Loading…
Reference in New Issue
Block a user