Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,39 @@
'use strict';
/* global module */
var SELECTORS = Object.freeze({
detailsFavoriteButton: '#toggle-favorite',
detailsHeader: '#details-view-header',
details: '#view-contact-details',
list: '#view-contacts-list'
});
function ContactsDetailsAccessor(client) {
this.client = client;
}
ContactsDetailsAccessor.prototype = {
get favoritesButton() {
return this.client.helper.waitForElement(
SELECTORS.detailsFavoriteButton);
},
get detailsHeader() {
return this.client.helper.waitForElement(
SELECTORS.detailsHeader);
},
get listSelector () {
return SELECTORS.list;
},
get detailsSelector () {
return SELECTORS.details;
},
get detailsHeaderSelector () {
return SELECTORS.detailsHeader;
}
};
module.exports = ContactsDetailsAccessor;

View file

@ -0,0 +1,66 @@
'use strict';
/* global module */
var ContactsDetailsAccessor = require('./accessors');
function ContactsDetailsView(client) {
this.client = client;
this.accessors = new ContactsDetailsAccessor(client);
}
ContactsDetailsView.prototype = {
makeFavorited: function() {
this.accessors.favoritesButton.tap();
this.waitForFavorited;
},
waitForFavorited: function() {
var self = this;
this.client.waitFor(
'waitForHeaderToContainFavoriteClass', function() {
return self.accessors.detailsHeader.getAttribute(
'class').indexOf('favorite') != -1;
});
},
//TO-DO: ADD THIS TO A CONTACT VIEW BASE CLASS
backToList: function() {
this.waitForFadeIn(this.client.helper.waitForElement(
this.accessors.detailsSelector));
var header = this.client.helper.waitForElement(
this.accessors.detailsHeaderSelector);
this.client.loader.getActions().wait(0.5).tap(header, 10, 10).perform();
this.waitSlideLeftList();
},
waitSlideLeftList: function() {
var element = this.client.findElement(
this.accessors.listSelector),
location;
var test = function() {
location = element.location();
return location.x <= 0;
};
this.client.waitFor(test);
},
waitForFadeIn: function(element) {
var test = function() {
var opacity = element.cssProperty('opacity');
var pointerEvents = element.cssProperty('pointer-events');
return opacity == 1 && pointerEvents == 'auto';
};
this.client.waitFor(test);
},
backtoContactsList: function() {
this.backToList();
var ContactsListView = require('../contact-list/view');
var contactsListView = new ContactsListView(this.client);
contactsListView.accessors.firstFavorite;
return contactsListView;
}
};
module.exports = ContactsDetailsView;

View file

@ -0,0 +1,31 @@
'use strict';
/* global module */
var SELECTORS = Object.freeze({
listContactFirstText: 'li:not([data-group="ice"]).contact-item p',
listFavoritesFirstText: '#contacts-list-favorites .contact-item p',
details: '#view-contact-details'
});
function ContactsListAccessor(client) {
this.client = client;
}
ContactsListAccessor.prototype = {
get firstContact() {
return this.client.helper.waitForElement(
SELECTORS.listContactFirstText);
},
get firstFavorite() {
return this.client.helper.waitForElement(
SELECTORS.listFavoritesFirstText);
},
get detailsSelector() {
return SELECTORS.details;
}
};
module.exports = ContactsListAccessor;

View file

@ -0,0 +1,47 @@
'use strict';
/* global module */
var ContactsListAccessor = require('./accessors');
function ContactsListView(client) {
this.client = client;
this.accessors = new ContactsListAccessor(client);
}
ContactsListView.prototype = {
get firstContact() {
return this.accessors.firstContact;
},
get firstFavorite() {
return this.accessors.firstFavorite;
},
waitSlideLeftDetails: function() {
var element = this.client.findElement(
this.accessors.detailsSelector),
location;
var waitUntilPanelReachedLeftBorder = function() {
location = element.location();
return location.x <= 0;
};
this.client.waitFor(waitUntilPanelReachedLeftBorder);
},
goToContact: function() {
this.firstContact.tap();
this.waitSlideLeftDetails();
return this._createContactsDetailsView();
},
_createContactsDetailsView: function() {
var ContactsDetailsView = require('../contact-details/view');
var contactsDetailsView = new ContactsDetailsView(
this.client, this.subject);
return contactsDetailsView;
}
};
module.exports = ContactsListView;