diff --git a/plugins/avatars/avatars.js b/plugins/avatars/avatars.js
index 3c252e848..4b9d2bdf0 100644
--- a/plugins/avatars/avatars.js
+++ b/plugins/avatars/avatars.js
@@ -117,51 +117,48 @@
*/
addEventListener('DOMContentLoaded', () => {
// rl.pluginSettingsGet('avatars', 'nextcloud');
- if (parent.OC) {
- const OC = () => parent.OC,
+ if (parent.OC?.requestToken) {
+ const OC = parent.OC,
nsDAV = 'DAV:',
nsNC = 'http://nextcloud.com/ns',
nsCard = 'urn:ietf:params:xml:ns:carddav',
getElementsByTagName = (parent, namespace, localName) => parent.getElementsByTagNameNS(namespace, localName),
getElementValue = (parent, namespace, localName) =>
- getElementsByTagName(parent, namespace, localName)?.item(0)?.textContent,
- generateUrl = path => OC().webroot + '/remote.php' + path;
- if (OC().requestToken) {
- fetch(generateUrl(`/dav/addressbooks/users/${OC().currentUser}/contacts/`), {
- mode: 'same-origin',
- cache: 'no-cache',
- redirect: 'error',
- credentials: 'same-origin',
- method: 'REPORT',
- headers: {
- requesttoken: OC().requestToken,
- 'Content-Type': 'application/xml; charset=utf-8',
- Depth: 1
- },
- body: ''
- })
- .then(response => (response.status < 400) ? response.text() : Promise.reject(new Error({ response })))
- .then(text => {
- const
- xmlParser = new DOMParser(),
- responseList = getElementsByTagName(
- xmlParser.parseFromString(text, 'application/xml').documentElement,
- nsDAV,
- 'response');
- for (let i = 0; i < responseList.length; ++i) {
- const item = responseList.item(i);
- if (1 == getElementValue(item, nsNC, 'has-photo')) {
- [...getElementValue(item, nsCard, 'address-data').matchAll(/EMAIL.*?:([^@\r\n]+@[^@\r\n]+)/g)]
- .forEach(match => {
- ncAvatars.set(
- match[1].toLowerCase(),
- getElementValue(item, nsDAV, 'href') + '?photo'
- );
- });
- }
+ getElementsByTagName(parent, namespace, localName)?.item(0)?.textContent;
+ fetch(`${OC.webroot}/remote.php/dav/addressbooks/users/${OC.currentUser}/contacts/`, {
+ mode: 'same-origin',
+ cache: 'no-cache',
+ redirect: 'error',
+ credentials: 'same-origin',
+ method: 'REPORT',
+ headers: {
+ requesttoken: OC.requestToken,
+ 'Content-Type': 'application/xml; charset=utf-8',
+ Depth: 1
+ },
+ body: ''
+ })
+ .then(response => (response.status < 400) ? response.text() : Promise.reject(new Error({ response })))
+ .then(text => {
+ const
+ xmlParser = new DOMParser(),
+ responseList = getElementsByTagName(
+ xmlParser.parseFromString(text, 'application/xml').documentElement,
+ nsDAV,
+ 'response');
+ for (let i = 0; i < responseList.length; ++i) {
+ const item = responseList.item(i);
+ if (1 == getElementValue(item, nsNC, 'has-photo')) {
+ [...getElementValue(item, nsCard, 'address-data').matchAll(/EMAIL.*?:([^@\r\n]+@[^@\r\n]+)/g)]
+ .forEach(match => {
+ ncAvatars.set(
+ match[1].toLowerCase(),
+ getElementValue(item, nsDAV, 'href') + '?photo'
+ );
+ });
}
- });
- }
+ }
+ });
}
});
diff --git a/plugins/avatars/index.php b/plugins/avatars/index.php
index 85c51be31..a2a2da338 100644
--- a/plugins/avatars/index.php
+++ b/plugins/avatars/index.php
@@ -172,6 +172,7 @@ class AvatarsPlugin extends \RainLoop\Plugins\AbstractPlugin
if (\class_exists('OC') && isset(\OC::$server)) {
$aResult[] = \RainLoop\Plugins\Property::NewInstance('nextcloud')->SetLabel('Lookup Nextcloud Contacts')
->SetType(\RainLoop\Enumerations\PluginPropertyType::BOOL)
+// ->SetAllowedInJs(true)
->SetDefaultValue(false);
}
*/