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,12 @@
;;;(function(exports){'use strict';[['asyncStorage','/shared/js/async_storage.js'],['EventDispatcher','/shared/js/event_dispatcher.js'],['Utils','/views/shared/js/utils.js']].forEach(([dependencyName,dependencyPath])=>{if(!(dependencyName in self)){importScripts(dependencyPath);}});var draftIndex=new Map();var deferredDraftRequest=null;var Drafts={get size(){return draftIndex.size;},init(){InterInstanceEventDispatcher.on('draft-saved',(draft)=>this.request(true).then(()=>this.emit('saved',draft)));InterInstanceEventDispatcher.on('draft-deleted',(draft)=>this.request(true).then(()=>this.emit('deleted',draft)));},add:function(draft){if(!draft||!(draft instanceof Draft)){throw new Error('Draft should be valid Draft instance.');}
this.delete(draft);var drafts=draftIndex.get(draft.threadId)||[];drafts.push(draft);draftIndex.set(draft.threadId,drafts);this.emit('saved',draft);InterInstanceEventDispatcher.emit('draft-saved',draft);return this;},delete:function(draft){if(!draft||!(draft instanceof Draft)){throw new Error('Draft should be valid Draft instance.');}
var drafts=draftIndex.get(draft.threadId);if(!drafts||!drafts.length){return this;}
var isDeleted=false;if(draft.threadId){drafts.length=0;isDeleted=true;}else{var indexToRemove=drafts.findIndex((storedDraft)=>storedDraft.id===draft.id);if(indexToRemove>-1){isDeleted=true;drafts.splice(indexToRemove,1);}}
if(isDeleted){this.emit('deleted',draft);InterInstanceEventDispatcher.emit('draft-deleted',draft);}
return this;},byThreadId:function(threadId){if(!threadId){throw new Error('Thread Id is not defined');}
var threadDrafts=draftIndex.get(threadId);return threadDrafts&&threadDrafts.length?threadDrafts[threadDrafts.length-1]:null;},byDraftId:function(id){id=+id;for(var draft of this.getAllThreadless()){if(draft.id===id){return draft;}}
return null;},getAll:function*(){for(var[threadId,drafts]of draftIndex){yield*threadId?drafts.slice(-1):drafts;}},getAllThreadless:function(){return draftIndex.get(null)||[];},clear:function(){draftIndex=new Map();deferredDraftRequest=null;return this;},store:function(){var defer=Utils.Promise.defer();asyncStorage.setItem('draft index',[...draftIndex],()=>{defer.resolve();});return defer.promise;},request:function(force){if(deferredDraftRequest&&!force){return deferredDraftRequest.promise;}
deferredDraftRequest=Utils.Promise.defer();asyncStorage.getItem('draft index',function(records){records&&records.forEach((record)=>{record[1]=record[1].map((draft)=>new Draft(draft));});draftIndex=new Map(records||[]);deferredDraftRequest.resolve();});return deferredDraftRequest.promise;}};exports.Drafts=EventDispatcher.mixin(Drafts,['saved','deleted']);function Draft(opts){var draft=opts||{};if(draft.id&&typeof draft.id!=='number'){throw new Error('Draft id must be a number');}
this.id=draft.id||guid();this.recipients=draft.recipients||[];this.content=draft.content||[];this.subject=draft.subject||'';this.timestamp=+draft.timestamp||Date.now();this.threadId=draft.threadId||null;this.type=draft.type;this.isEdited=false;}
function guid(){return+(Date.now()+''+(Math.random()*1000|0));}
exports.Draft=Draft;}(this));