From caa7891b934e369f3f191cdcdfb70e93f1ded9a0 Mon Sep 17 00:00:00 2001 From: Feufochmar Date: Mon, 24 May 2021 13:48:22 +0200 Subject: [PATCH] Use import/export instead of require, so node is not needed in the render. Also fix an issue with previous/next in timelines. --- index.html | 5 +- main.js | 2 - render.js | 10 ++-- src/activity-object.js | 6 +- src/activity-vocabulary.js | 116 +++++++++++++++++++------------------ src/activity.js | 8 +-- src/actor.js | 4 +- src/connected-user.js | 6 +- src/known-actors.js | 4 +- src/message.js | 4 +- src/timeline.js | 24 ++++---- src/token-collection.js | 4 +- 12 files changed, 97 insertions(+), 96 deletions(-) diff --git a/index.html b/index.html index 947acb0..aa04201 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,10 @@ - + diff --git a/main.js b/main.js index 542b674..8af4330 100644 --- a/main.js +++ b/main.js @@ -6,8 +6,6 @@ function createWindow () { width: 1024, height: 768, webPreferences: { - nodeIntegration: true, - contextIsolation: false }, icon: __dirname + '/img/APMail.png' }) diff --git a/render.js b/render.js index c513b45..037f73d 100644 --- a/render.js +++ b/render.js @@ -1,7 +1,7 @@ -const {Actor} = require('./src/actor.js') -const {Timeline, KnownActivities} = require('./src/timeline.js') -const {Message} = require('./src/message.js') -const {ConnectedUser} = require('./src/connected-user.js') +import {Actor} from './src/actor.js' +import {Timeline, KnownActivities} from './src/timeline.js' +import {Message} from './src/message.js' +import {ConnectedUser} from './src/connected-user.js' // For access of elements const Elem = function(id) { @@ -493,3 +493,5 @@ const UI = { }) } } + +export {UI} diff --git a/src/activity-object.js b/src/activity-object.js index 56f5707..3cc184c 100644 --- a/src/activity-object.js +++ b/src/activity-object.js @@ -1,5 +1,5 @@ -const {Actor} = require('./actor.js') -const {KnownActors} = require('./known-actors.js') +import {Actor} from './actor.js' +import {KnownActors} from './known-actors.js' // ActivityObject class: wrapper around an Object of the ActivityStream spec const ActivityObject = function(as_object) { @@ -109,4 +109,4 @@ ActivityObject.prototype = { } // Exported structures -exports.ActivityObject = ActivityObject +export {ActivityObject} diff --git a/src/activity-vocabulary.js b/src/activity-vocabulary.js index ff804f4..177bc8a 100644 --- a/src/activity-vocabulary.js +++ b/src/activity-vocabulary.js @@ -74,8 +74,8 @@ const ASMention = function() {} // Object fetcher // Convert resources from the resource fetcher into Activity objects -const {TokenCollection} = require('./token-collection.js') -Fetcher = { +import {TokenCollection} from './token-collection.js' +const Fetcher = { // Cache of already accessed objects knownObjects: {}, // Get an object @@ -536,7 +536,7 @@ ASCollectionPage.prototype.constructor = ASCollectionPage ASOrderedCollectionPage.prototype = Object.create(ASCollectionPage.prototype) Object.assign(ASOrderedCollectionPage.prototype, ASOrderedCollection.prototype) // Helping function for removing duplicates -unique = function(arr) { +const unique = function(arr) { return arr.filter(function (elem, idx) { return idx === arr.indexOf(elem) }) } Object.assign(ASOrderedCollectionPage.prototype, @@ -857,63 +857,65 @@ ASMention.prototype.constructor = ASMention //// // Exported structures +export { // Fetcher -exports.Fetcher = Fetcher +Fetcher, // Core types -exports.ASObject = ASObject -exports.ASLink = ASLink -exports.ASActivity = ASActivity -exports.ASIntransitiveActivity = ASIntransitiveActivity -exports.ASCollection = ASCollection -exports.ASOrderedCollection = ASOrderedCollection -exports.ASCollectionPage = ASCollectionPage -exports.ASOrderedCollectionPage = ASOrderedCollectionPage -exports.ASActor = ASActor +ASObject, +ASLink, +ASActivity, +ASIntransitiveActivity, +ASCollection, +ASOrderedCollection, +ASCollectionPage, +ASOrderedCollectionPage, +ASActor, // Activity types -exports.ASAccept = ASAccept -exports.ASAdd = ASAdd -exports.ASAnnounce = ASAnnounce -exports.ASArrive = ASArrive -exports.ASBlock = ASBlock -exports.ASCreate = ASCreate -exports.ASDelete = ASDelete -exports.ASDislike = ASDislike -exports.ASFlag = ASFlag -exports.ASFollow = ASFollow -exports.ASIgnore = ASIgnore -exports.ASInvite = ASInvite -exports.ASJoin = ASJoin -exports.ASLeave = ASLeave -exports.ASLike = ASLike -exports.ASListen = ASListen -exports.ASMove = ASMove -exports.ASOffer = ASOffer -exports.ASQuestion = ASQuestion -exports.ASReject = ASReject -exports.ASRead = ASRead -exports.ASRemove = ASRemove -exports.ASTentativeReject = ASTentativeReject -exports.ASTentativeAccept = ASTentativeAccept -exports.ASTravel = ASTravel -exports.ASUpdate = ASUpdate -exports.ASView = ASView +ASAccept, +ASAdd, +ASAnnounce, +ASArrive, +ASBlock, +ASCreate, +ASDelete, +ASDislike, +ASFlag, +ASFollow, +ASIgnore, +ASInvite, +ASJoin, +ASLeave, +ASLike, +ASListen, +ASMove, +ASOffer, +ASQuestion, +ASReject, +ASRead, +ASRemove, +ASTentativeReject, +ASTentativeAccept, +ASTravel, +ASUpdate, +ASView, // Actor types -exports.ASApplication = ASApplication -exports.ASGroup = ASGroup -exports.ASOrganization = ASOrganization -exports.ASPerson = ASPerson -exports.ASService = ASService +ASApplication, +ASGroup, +ASOrganization, +ASPerson, +ASService, // Object types -exports.ASArticle = ASArticle -exports.ASAudio = ASAudio -exports.ASDocument = ASDocument -exports.ASImage = ASImage -exports.ASNote = ASNote -exports.ASPage = ASPage -exports.ASPlace = ASPlace -exports.ASProfile = ASProfile -exports.ASRelationship = ASRelationship -exports.ASTombstone = ASTombstone -exports.ASVideo = ASVideo +ASArticle, +ASAudio, +ASDocument, +ASImage, +ASNote, +ASPage, +ASPlace, +ASProfile, +ASRelationship, +ASTombstone, +ASVideo, // Link types -exports.ASMention = ASMention +ASMention, +} diff --git a/src/activity.js b/src/activity.js index dc727ae..a3abba3 100644 --- a/src/activity.js +++ b/src/activity.js @@ -1,6 +1,6 @@ -const {Actor} = require('./actor.js') -const {KnownActors} = require('./known-actors.js') -const {ActivityObject} = require('./activity-object.js') +import {Actor} from './actor.js' +import {KnownActors} from './known-actors.js' +import {ActivityObject} from './activity-object.js' // Activity class const Activity = function (as_activity) { @@ -127,4 +127,4 @@ Activity.prototype = { } // Exported structures -exports.Activity = Activity +export {Activity} diff --git a/src/actor.js b/src/actor.js index 77c5203..d91548d 100644 --- a/src/actor.js +++ b/src/actor.js @@ -1,4 +1,4 @@ -const {Fetcher, ASActor} = require('./activity-vocabulary.js') +import {Fetcher, ASActor} from './activity-vocabulary.js' // Actor class // Add additional services around an ASActor @@ -125,4 +125,4 @@ Actor.prototype = { } // Exported structures -exports.Actor = Actor +export {Actor} diff --git a/src/connected-user.js b/src/connected-user.js index 9042e5f..a11aa98 100644 --- a/src/connected-user.js +++ b/src/connected-user.js @@ -1,5 +1,5 @@ -const {TokenCollection} = require('./token-collection.js') -const {Actor} = require('./actor.js') +import {TokenCollection} from './token-collection.js' +import {Actor} from './actor.js' // Connected user structure const ConnectedUser = { @@ -149,4 +149,4 @@ const ConnectedUser = { } // Exported structures -exports.ConnectedUser = ConnectedUser +export {ConnectedUser} diff --git a/src/known-actors.js b/src/known-actors.js index 3e88e49..53e12ac 100644 --- a/src/known-actors.js +++ b/src/known-actors.js @@ -1,4 +1,4 @@ -const {Actor} = require('./actor.js') +import {Actor} from './actor.js' // A cache for actors, to avoid loading same actors several times when loading timelines const KnownActors = { @@ -40,4 +40,4 @@ publicActor.fromDummyData('', 'public', 'Anyone', 'https://www.w3.org/ns/activit KnownActors.set(publicActor.data.id, publicActor) // Exported structures -exports.KnownActors = KnownActors +export {KnownActors} diff --git a/src/message.js b/src/message.js index f1217ad..806269a 100644 --- a/src/message.js +++ b/src/message.js @@ -1,4 +1,4 @@ -const {ConnectedUser} = require('./connected-user.js') +import {ConnectedUser} from './connected-user.js' // Outgoing messages var Message = function() { @@ -96,4 +96,4 @@ Message.prototype = { } // Exported structures -exports.Message = Message +export {Message} diff --git a/src/timeline.js b/src/timeline.js index 0fb146b..78279cf 100644 --- a/src/timeline.js +++ b/src/timeline.js @@ -1,5 +1,5 @@ -const {Fetcher} = require('./activity-vocabulary.js') -const {Activity} = require('./activity.js') +import {Fetcher} from './activity-vocabulary.js' +import {Activity} from './activity.js' // Already fetched activities, as a map, in order to be able to fetch them by their id const KnownActivities = { @@ -35,9 +35,6 @@ Timeline.prototype = { // Fetch the attribute fetched_timeline.refreshAttribute('first', function (ok, error) { if (load_ok) { - this.activities = [] - this.prev = fetched_timeline.prev - this.next = fetched_timeline.next this.parsePage(fetched_timeline.first, callback) } else { callback(false, error) @@ -45,14 +42,8 @@ Timeline.prototype = { }.bind(this)) } else if (fetched_timeline.type === 'OrderedCollection' && fetched_timeline.orderedItems) { // Collection is not paginated - this.activities = [] - this.prev = fetched_timeline.prev - this.next = fetched_timeline.next this.parsePage(fetched_timeline, callback) } else if (fetched_timeline.type === 'OrderedCollectionPage') { - this.activities = [] - this.prev = fetched_timeline.prev - this.next = fetched_timeline.next this.parsePage(fetched_timeline, callback) } else { callback(false, 'Unexpected answer from server when fetching activity collection.') @@ -65,12 +56,18 @@ Timeline.prototype = { }.bind(this)) }, parsePage: function (collectionPage, callback) { + // Set the values + this.activities = [] + this.prev = collectionPage.prev + this.next = collectionPage.next // Fetch attributes of collectionPage collectionPage.refreshAttribute('orderedItems', function (load_ok, failure_message) { - if (load_ok) { + if (load_ok && collectionPage.orderedItems) { // Elements of the page have been fetched // For each, convert them to Activity and put them in this.activities this.addActivity(collectionPage.orderedItems.values(), callback, '') + } else if (load_ok) { + callback(false, 'No item in activity collection.') } else { callback(false, failure_message) } @@ -99,5 +96,4 @@ Timeline.prototype = { } // Exported structures -exports.Timeline = Timeline -exports.KnownActivities = KnownActivities +export {Timeline, KnownActivities} diff --git a/src/token-collection.js b/src/token-collection.js index 69580e3..df279bb 100644 --- a/src/token-collection.js +++ b/src/token-collection.js @@ -1,5 +1,5 @@ // A small object for getting the token when talking to a server -TokenCollection = { +const TokenCollection = { tokens: {}, set: function (server, token) { TokenCollection.tokens[server] = token @@ -11,4 +11,4 @@ TokenCollection = { } // Exported structures -exports.TokenCollection = TokenCollection +export {TokenCollection}