Astroport.ONE/templates/tw/$ _plugins_astroport_lightb...

2 lines
53 KiB
JSON

[{"created":"20221204164729903","creator":"Boris","text":"{\n \"tiddlers\": {\n \"$:/plugins/astroport/lightbeams/friends.js\": {\n \"created\": \"20221130194918470\",\n \"creator\": \"Boris\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/astroport/lightbeams/homefeed.js\\ntype: application/javascript\\nmodule-type: macro\\nMacro to return the user's homefeed\\n\\\\*/\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nInformation about this macro\\n*/\\n\\nexports.name = \\\"friends\\\";\\n\\nexports.params = [\\n];\\n\\n\\nexports.run = async function() {\\n\\n\\tlet gchangeNode = 'https://data.gchange.fr'\\n\\tlet uri = '/like/record/_search'\\n\\tlet url = gchangeNode + uri\\n\\tlet playerId = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/state/playerGchangeId').fields.text\\n\\n\\tconsole.log('playerId :', playerId)\\n\\n\\t//\\n\\t// Get ratings I received\\n\\t//\\n\\t\\n\\tlet params = {\\n\\t\\tsize : 150, \\n\\t\\tquery : {\\n\\t\\t\\tbool : {\\n\\t\\t\\t\\tmust : [\\n\\t\\t\\t\\t\\t{term : {kind : 'STAR'}}\\n\\t\\t\\t\\t], \\n\\t\\t\\t\\tfilter : [\\n\\t\\t\\t\\t\\t{term : {id : playerId}}\\n\\t\\t\\t\\t]\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tlet fetchOpts = {\\n\\n\\t\\tmethod: 'POST',\\n\\t\\theaders: {\\n\\t\\t\\t'Content-Type': 'application/json;charset=utf-8'\\n\\t\\t},\\n\\t\\tbody: JSON.stringify(params)\\n\\t}\\n\\n\\tlet response = await fetch(url, fetchOpts)\\n\\n\\tlet jsonData = await response.json()\\n\\n\\tconsole.log(jsonData)\\n\\n\\tlet starSenders = ''\\n\\n\\tfor (const record of jsonData.hits.hits) {\\n\\n\\t\\t// sender\\n\\t\\tstarSenders += record._source.issuer + \\\"\\\\n\\\"\\n\\n\\t\\t// receiver\\n\\t\\t// friendsList += record._source.id\\n\\t}\\n\\n\\tlet fields = {title: '$:/plugins/astroport/lightbeams/state/stars_senders', text: starSenders}\\n\\t$tw.wiki.addTiddler(new $tw.Tiddler(fields))\\n\\n\\n\\t//\\n\\t// Get ratings I sent\\n\\t//\\n\\n\\tparams = {\\n\\t\\tsize: 150, \\n\\n\\t\\tquery : {\\n\\t\\t\\tbool : {\\n\\t\\t\\t\\tmust : [\\n\\t\\t\\t\\t\\t{term : {kind : 'STAR'} }\\n\\t\\t\\t\\t], \\n\\t\\t\\t\\tfilter : [\\n\\t\\t\\t\\t\\t{term : {issuer : playerId}}\\n\\t\\t\\t\\t]\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tfetchOpts = {\\n\\n\\t\\tmethod: 'POST',\\n\\t\\theaders: {\\n\\t\\t\\t'Content-Type': 'application/json;charset=utf-8'\\n\\t\\t},\\n\\t\\tbody: JSON.stringify(params)\\n\\t}\\n\\n\\tresponse = await fetch(url, fetchOpts)\\n\\n\\tjsonData = await response.json()\\n\\n\\tconsole.log(jsonData)\\n\\n\\tlet starSendees = ''\\n\\n\\tfor (const record of jsonData.hits.hits) {\\n\\n\\t\\t// sender\\n\\t\\tstarSendees += record._source.id + \\\"\\\\n\\\"\\n\\t}\\n\\n\\tfields = {title: '$:/plugins/astroport/lightbeams/state/stars_sendees', text: starSendees}\\n\\t$tw.wiki.addTiddler(new $tw.Tiddler(fields))\\n}\\n\\n\\n})();\",\n \"tags\": \"\",\n \"title\": \"$:/plugins/astroport/lightbeams/friends.js\",\n \"modified\": \"20221204180955944\",\n \"modifier\": \"Boris\",\n \"type\": \"application/javascript\",\n \"module-type\": \"macro\"\n },\n \"$:/plugins/astroport/lightbeams/HomeFeed\": {\n \"created\": \"20221130140952175\",\n \"creator\": \"Boris\",\n \"text\": \"<!-- -->\",\n \"title\": \"$:/plugins/astroport/lightbeams/HomeFeed\",\n \"modified\": \"20221204165539922\",\n \"modifier\": \"Boris\",\n \"tags\": \"\"\n },\n \"$:/plugins/astroport/lightbeams/homefeed.js\": {\n \"created\": \"20221130144350767\",\n \"creator\": \"Boris\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/astroport/lightbeams/homefeed.js\\ntype: application/javascript\\nmodule-type: macro\\nMacro to return the user's homefeed\\n\\\\*/\\n\\n(function(){\\n\\n/*jslint node: true, browser: true */\\n/*global $tw: false */\\n\\\"use strict\\\";\\n\\n/*\\nInformation about this macro\\n*/\\n\\nexports.name = \\\"homefeed\\\";\\n\\nexports.params = [\\n];\\n\\n\\nexports.run = async function() {\\n\\n\\t// const IpfsController = require('$:/plugins/ipfs/ipfs-controller.js').IpfsController\\n\\t// let gateway = IpfsController.getIpfsDefaultGateway()\\n\\n\\tlet gateway = $tw.wiki.getTiddler($tw.wiki.getTiddler('$:/ipfs/saver/gateway').fields.text).fields.text\\n\\n\\tlet subscriptions = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/state/subscriptions')\\n\\n\\tlet subs = subscriptions.fields.text.split(\\\"\\\\n\\\")\\n\\n\\tlet posts = []\\n\\n\\tfor (const sub of subs) {\\n\\n\\t\\tlet url = gateway + '/ipns/' + sub\\n\\n\\t\\tlet reponse = await fetch(url)\\n\\n\\t\\tlet jsonFeed = await reponse.json()\\n\\n\\t\\t// console.log(jsonFeed)\\n\\t\\t// let feed = JSON.parse(jsonFeed)\\n\\n\\t\\tfor (const entry of jsonFeed) {\\n\\n\\t\\t\\tposts.push(entry)\\n\\t\\t}\\n\\t}\\n\\n\\n\\tlet sortPosts = function (a, b) {\\n\\n\\t\\treturn a.created > b.created ? -1 : 1;\\n\\t}\\n\\n\\tposts.sort(sortPosts)\\n\\n\\tconsole.log(posts)\\n\\t\\n\\n\\tlet html = '';\\n\\n\\tfor (const entry of posts) {\\n\\n\\t\\thtml += `\\n\\t\\t<article class=\\\"post\\\">\\n\\t\\t\\t<h2>` + entry.title + `</h2>\\n\\n\\t\\t\\t<section class=\\\"contents\\\">`;\\n\\n\\t\\t\\tswitch (entry.type) {\\n\\n\\t\\t\\t\\tcase 'video/mp4':\\n\\n\\t\\t\\t\\t\\tif (entry._canonical_uri) {\\n\\n\\t\\t\\t\\t\\t\\thtml += `\\n\\t\\t\\t\\t\\t\\t<video controls>\\n\\t\\t\\t\\t\\t\\t\\t<source src=\\\"`+ entry._canonical_uri +`\\\" type=\\\"video/mp4\\\" />\\n\\n\\t\\t\\t\\t\\t\\t\\tVotre navigateur ne gère pas la balise vidéo.\\n\\t\\t\\t\\t\\t\\t</video>\\n\\t\\t\\t\\t\\t\\t`\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase 'image/png':\\n\\n\\t\\t\\t\\t\\tif (entry._canonical_uri) {\\n\\n\\t\\t\\t\\t\\t\\thtml += `\\n\\t\\t\\t\\t\\t\\t<img src=\\\"`+ entry._canonical_uri +`\\\" />\\n\\t\\t\\t\\t\\t\\t`\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase 'image/jpeg':\\n\\n\\t\\t\\t\\t\\tif (entry._canonical_uri) {\\n\\n\\t\\t\\t\\t\\t\\thtml += `\\n\\t\\t\\t\\t\\t\\t<img src=\\\"`+ entry._canonical_uri +`\\\" />\\n\\t\\t\\t\\t\\t\\t`\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase 'image/gif':\\n\\n\\t\\t\\t\\t\\tif (entry._canonical_uri) {\\n\\n\\t\\t\\t\\t\\t\\thtml += `\\n\\t\\t\\t\\t\\t\\t<img src=\\\"`+ entry._canonical_uri +`\\\" />\\n\\t\\t\\t\\t\\t\\t`\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tbreak;\\n\\n\\t\\t\\t\\tcase 'text/plain':\\n\\n\\t\\t\\t\\t\\thtml += entry.text\\n\\t\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\n\\t\\t\\thtml += `\\n\\t\\t\\t</section>\\n\\t\\t\\t`\\n\\n\\t\\t\\tlet params = ''\\n\\t\\t\\tparams += !(entry._canonical_uri) ? '' : ' _canonical_uri=\\\"' + entry._canonical_uri +'\\\"'\\n\\n\\t\\t\\thtml +=`\\n\\t\\t\\t<footer>\\n\\t\\t\\t\\t<$button>\\n\\t\\t\\t\\t\\t<$action-createtiddler \\n\\t\\t\\t\\t\\t\\t$basetitle=\\\"`+ entry.title +`\\\" \\n\\t\\t\\t\\t\\t\\ttype=\\\"`+ entry.type +`\\\" \\n\\t\\t\\t\\t\\t\\ttags=\\\"`+ entry.tags +`\\\" \\n\\t\\t\\t\\t\\t\\ttext=\\\"`+ entry.text +`\\\" \\n\\t\\t\\t\\t\\t\\t`+ params + `>\\n\\t\\t\\t\\t\\t\\t<$action-navigate $to=<<createTiddler-title>>/>\\n\\t\\t\\t\\t\\t</$action-createtiddler>\\n\\t\\t\\t\\t\\tAjouter à mon Tiddly\\n\\t\\t\\t\\t</$button>\\n\\t\\t\\t</footer>\\n\\t\\t</article>\\n\\t\\t`\\n\\t}\\n\\n\\t// console.log('html:', html)\\n\\tlet feedTiddlerTitle = '$:/plugins/astroport/lightbeams/myFeed'\\n\\tlet feedtiddlerFields = {title: feedTiddlerTitle, text: html}\\n\\n\\tlet feedTiddler = $tw.wiki.getTiddler(feedTiddlerTitle)\\n\\n\\tif (feedTiddler !== undefined) {\\n\\n\\t\\tfeedTiddler = $tw.utils.updateTiddler({\\n\\t\\t\\ttiddler: feedTiddler,\\n\\t\\t\\tfields: feedtiddlerFields\\n\\t\\t})\\n\\n\\t\\t$tw.wiki.addTiddler(feedTiddler)\\n\\n\\t} else {\\n\\n\\t\\t$tw.wiki.addTiddler(new $tw.Tiddler(feedtiddlerFields))\\n\\t}\\n\\t\\n\\treturn true\\n\\n};\\n\\n})();\",\n \"tags\": \"$:/isIpfs $:/isExported\",\n \"title\": \"$:/plugins/astroport/lightbeams/homefeed.js\",\n \"modified\": \"20221205171128263\",\n \"modifier\": \"Boris\",\n \"type\": \"application/javascript\",\n \"module-type\": \"macro\",\n \"_export_uri\": \"/ipfs/bafybeih4w3nhjie4kk4nftf5c3qoogcx5k4uy33vjcko2mdwsnw4cbmxpa\"\n },\n \"$:/plugins/astroport/lightbeams/lightbeams-action.js\": {\n \"created\": \"20221205102310210\",\n \"creator\": \"Boris\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/astroport/lightbeams/lightbeams-action.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: library\\n\\nLightbeams Action\\n\\n\\\\*/\\n\\n;(function () {\\n\\t/*jslint node: true, browser: true */\\n\\t/*global $tw: false */\\n\\t'use strict'\\n\\n\\tconst fileProtocol = 'file:'\\n\\tconst ipfsKeyword = 'ipfs'\\n\\tconst ipnsKeyword = 'ipns'\\n\\n\\tconst name = 'lightbeams-action'\\n\\n\\tvar LightbeamsAction = function () {\\n\\t\\tthis.once = false\\n\\t\\tthis.console = false\\n\\t\\tthis.ipnsName = $tw.utils.getIpfsIpnsName()\\n\\t\\tthis.ipnsKey = $tw.utils.getIpfsIpnsKey()\\n\\t\\tthis.ipnsName_Lightbeam = $tw.utils.getIpfsIpnsName_Lightbeam()\\n\\t\\tthis.ipnsKey_Lightbeam = $tw.utils.getIpfsIpnsKey_Lightbeam()\\n\\t}\\n\\n\\tLightbeamsAction.prototype.getLogger = function () {\\n\\t\\treturn window.log.getLogger(name)\\n\\t}\\n\\n\\tLightbeamsAction.prototype.init = function () {\\n\\t\\t// Init once\\n\\t\\tif (this.once) {\\n\\t\\t\\treturn\\n\\t\\t}\\n\\t\\tconst self = this\\n\\n\\t\\t$tw.rootWidget.addEventListener('tm-lightbeam-ipns-publish', async function (event) {\\n\\t\\t\\treturn await self.handlePublishToIpns_Lightbeam(event)\\n\\t\\t})\\n\\n\\t\\t// Buttons in control panel\\n\\n\\t\\t$tw.rootWidget.addEventListener('tm-lightbeam-ipns-rename', async function (event) {\\n\\t\\t\\treturn await self.handleRenameIpnsName_Lightbeam(event)\\n\\t\\t})\\n\\n\\t\\t$tw.rootWidget.addEventListener('tm-lightbeam-ipns-generate', async function (event) {\\n\\t\\t\\treturn await self.handleGenerateIpnsKey_Lightbeam(event)\\n\\t\\t})\\n\\n\\t\\t$tw.rootWidget.addEventListener('tm-lightbeam-ipns-remove', async function (event) {\\n\\t\\t\\treturn await self.handleRemoveIpnsKey_Lightbeam(event)\\n\\t\\t})\\n\\n\\t\\t$tw.rootWidget.addEventListener('tm-lightbeam-ipns-fetch', async function (event) {\\n\\t\\t\\treturn await self.handleFetchIpnsKey_Lightbeam(event)\\n\\t\\t})\\n\\n\\t\\t$tw.rootWidget.addEventListener('tm-lightbeam-ipns-resolve-and-open', async function (\\n\\t\\t\\tevent\\n\\t\\t) {\\n\\t\\t\\treturn await self.handleResolveIpnsKeyAndOpen_Lightbeam(event)\\n\\t\\t})\\n\\n\\t\\t// Init once\\n\\t\\tthis.once = true\\n\\t}\\n\\n\\tLightbeamsAction.prototype.handlePublishToIpns_Lightbeam = async function (event) {\\n\\t\\tvar cid = null\\n\\t\\tvar ipnsKey = null\\n\\t\\tvar wikiCid = null\\n\\t\\tvar wikiIpnsKey = null\\n\\t\\tconst self = this\\n\\t\\tconst wiki = $tw.ipfs.getDocumentUrl()\\n\\t\\tif (wiki.protocol === fileProtocol) {\\n\\t\\t\\t$tw.utils.alert(name, 'Undefined IPFS identifier...')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\tif (wiki.pathname === '/') {\\n\\t\\t\\t$tw.utils.alert(name, 'Unknown IPFS identifier...')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\tvar ipnsName = $tw.utils.getIpfsIpnsName()\\n\\t\\tipnsName =\\n\\t\\t\\tipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n\\t\\t\\t\\t? null\\n\\t\\t\\t\\t: ipnsName.trim()\\n\\t\\tif (ipnsName == null) {\\n\\t\\t\\t$tw.utils.alert(name, 'Undefined IPNS name....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\tvar { cid, ipnsKey } = await $tw.ipfs.resolveUrl(\\n\\t\\t\\t\\ttrue,\\n\\t\\t\\t\\tfalse,\\n\\t\\t\\t\\t`/ipns/${ipnsName}`\\n\\t\\t\\t)\\n\\t\\t\\tvar { cid: wikiCid, ipnsKey: wikiIpnsKey } = await $tw.ipfs.resolveUrl(\\n\\t\\t\\t\\ttrue,\\n\\t\\t\\t\\ttrue,\\n\\t\\t\\t\\twiki\\n\\t\\t\\t)\\n\\t\\t} catch (error) {\\n\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\tif (wikiIpnsKey !== null && wikiIpnsKey === ipnsKey) {\\n\\t\\t\\t$tw.utils.alert(name, 'Default IPNS key matches current IPNS key....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\t$tw.utils.alert(name, 'Publishing IPNS name: ' + ipnsName)\\n\\t\\t$tw.ipfs\\n\\t\\t\\t.publishIpnsName(wikiCid, ipnsKey, ipnsName)\\n\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t$tw.ipfs.requestToUnpin(cid)\\n\\t\\t\\t\\t$tw.utils.alert(name, 'Successfully Published IPNS name: ' + ipnsName)\\n\\t\\t\\t})\\n\\t\\t\\t.catch(error => {\\n\\t\\t\\t\\tself.getLogger().error(error)\\n\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t})\\n\\t\\treturn true\\n\\t}\\n\\n\\tLightbeamsAction.prototype.handleRenameIpnsName_Lightbeam = async function (event) {\\n\\t\\tvar ipnsKey = null\\n\\t\\tvar ipnsName = $tw.utils.getIpfsIpnsName_Lightbeam()\\n\\t\\tipnsName =\\n\\t\\t\\tipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n\\t\\t\\t\\t? null\\n\\t\\t\\t\\t: ipnsName.trim()\\n\\t\\tif (ipnsName == null) {\\n\\t\\t\\t$tw.utils.alert(name, 'Undefined IPNS name....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\tif (this.ipnsName == null || this.ipnsName === ipnsName) {\\n\\t\\t\\t$tw.utils.alert(name, 'Nothing to rename....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\tvar { ipnsKey } = await $tw.ipfs.renameIpnsName(this.ipnsName_Lightbeam, ipnsName)\\n\\t\\t} catch (error) {\\n\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\tvar tiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key')\\n\\t\\tif (tiddler !== undefined && this.ipnsKey !== ipnsKey) {\\n\\t\\t\\ttiddler = $tw.utils.updateTiddler({\\n\\t\\t\\t\\ttiddler: tiddler,\\n\\t\\t\\t\\tfields: [{ key: 'text', value: ipnsKey }]\\n\\t\\t\\t})\\n\\t\\t\\t$tw.wiki.addTiddler(tiddler)\\n\\t\\t}\\n\\t\\tthis.ipnsKey_Lightbeam = ipnsKey\\n\\t\\tthis.ipnsName_Lightbeam = ipnsName\\n\\t\\treturn true\\n\\t}\\n\\n\\tLightbeamsAction.prototype.handleGenerateIpnsKey_Lightbeam = async function (event) {\\n\\t\\tvar ipnsKey = null\\n\\t\\tvar ipnsName = $tw.utils.getIpfsIpnsName_Lightbeam()\\n\\t\\tipnsName =\\n\\t\\t\\tipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n\\t\\t\\t\\t? null\\n\\t\\t\\t\\t: ipnsName.trim()\\n\\t\\tif (ipnsName == null) {\\n\\t\\t\\t$tw.utils.alert(name, 'Undefined IPNS name....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\tvar ipnsKey = await $tw.ipfs.generateIpnsKey(ipnsName)\\n\\t\\t} catch (error) {\\n\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\tvar tiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key')\\n\\n\\t\\tif (tiddler === undefined) {\\n\\n\\t\\t\\ttiddler = new $tw.Tiddler({\\n\\t\\t\\t\\ttitle: '$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key',\\n\\t\\t\\t\\ttext: ipnsKey\\n\\t\\t\\t})\\n\\t\\t\\t$tw.wiki.addTiddler(tiddler)\\n\\n\\t\\t} else if (this.ipnsKey_Lightbeam !== ipnsKey) {\\n\\t\\t\\ttiddler = $tw.utils.updateTiddler({\\n\\t\\t\\t\\ttiddler: tiddler,\\n\\t\\t\\t\\tfields: [{ key: 'text', value: ipnsKey }]\\n\\t\\t\\t})\\n\\t\\t\\t$tw.wiki.addTiddler(tiddler)\\n\\t\\t}\\n\\t\\tthis.ipnsKey_Lightbeam = ipnsKey\\n\\t\\tthis.ipnsName_Lightbeam = ipnsName\\n\\t\\treturn true\\n\\t}\\n\\n\\tLightbeamsAction.prototype.handleRemoveIpnsKey_Lightbeam = async function (event) {\\n\\t\\tvar ipnsKey = null\\n\\t\\tvar normalizedUrl = null\\n\\t\\tconst self = this\\n\\t\\tvar ipnsName = $tw.utils.getIpfsIpnsName_Lightbeam()\\n\\t\\tipnsName =\\n\\t\\t\\tipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n\\t\\t\\t\\t? null\\n\\t\\t\\t\\t: ipnsName.trim()\\n\\t\\tif (ipnsName == null) {\\n\\t\\t\\t$tw.utils.alert(name, 'Undefined IPNS name....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\tvar { ipnsKey, normalizedUrl } = await $tw.ipfs.getIpnsIdentifiers(\\n\\t\\t\\t\\tipnsName\\n\\t\\t\\t)\\n\\t\\t} catch (error) {\\n\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\t// Async\\n\\t\\t$tw.ipfs\\n\\t\\t\\t.requestToUnpin(null, ipnsKey, normalizedUrl)\\n\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t$tw.ipfs\\n\\t\\t\\t\\t\\t.removeIpnsKey(ipnsName)\\n\\t\\t\\t\\t\\t.then(data => {\\n\\t\\t\\t\\t\\t\\t$tw.utils.alert(name, 'Succesfully removed Ipns key....')\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t\\t.catch(error => {\\n\\t\\t\\t\\t\\t\\tself.getLogger().error(error)\\n\\t\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t})\\n\\t\\t\\t.catch(error => {\\n\\t\\t\\t\\tself.getLogger().error(error)\\n\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t})\\n\\t\\tvar tiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name')\\n\\t\\tif (tiddler !== undefined) {\\n\\t\\t\\tconst updatedTiddler = $tw.utils.updateTiddler({\\n\\t\\t\\t\\ttiddler: tiddler,\\n\\t\\t\\t\\tfields: [{ key: 'text', value: '' }]\\n\\t\\t\\t})\\n\\t\\t\\t$tw.wiki.addTiddler(updatedTiddler)\\n\\t\\t}\\n\\t\\ttiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key')\\n\\t\\tif (tiddler !== undefined) {\\n\\t\\t\\tconst updatedTiddler = $tw.utils.updateTiddler({\\n\\t\\t\\t\\ttiddler: tiddler,\\n\\t\\t\\t\\tfields: [{ key: 'text', value: '' }]\\n\\t\\t\\t})\\n\\t\\t\\t$tw.wiki.addTiddler(updatedTiddler)\\n\\t\\t}\\n\\t\\tthis.ipnsName_Lightbeam = null\\n\\t\\tthis.ipnsKey_Lightbeam = null\\n\\t\\treturn true\\n\\t}\\n\\n\\tLightbeamsAction.prototype.handleFetchIpnsKey_Lightbeam = async function (event) {\\n\\t\\tvar ipnsKey = null\\n\\t\\tvar ipnsName = $tw.utils.getIpfsIpnsName_Lightbeam()\\n\\t\\tipnsName =\\n\\t\\t\\tipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n\\t\\t\\t\\t? null\\n\\t\\t\\t\\t: ipnsName.trim()\\n\\t\\tif (ipnsName == null) {\\n\\t\\t\\t$tw.utils.alert(name, 'Undefined IPNS name for JSON....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\tvar { ipnsKey } = await $tw.ipfs.getIpnsIdentifiers(ipnsName)\\n\\t\\t} catch (error) {\\n\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\n\\t\\tvar tiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key')\\n\\n\\t\\tif (tiddler === undefined) {\\n\\n\\t\\t\\ttiddler = new $tw.Tiddler({\\n\\t\\t\\t\\ttitle: '$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key',\\n\\t\\t\\t\\ttext: ipnsKey\\n\\t\\t\\t})\\n\\t\\t\\t$tw.wiki.addTiddler(tiddler)\\n\\n\\t\\t} else if (this.ipnsKey !== ipnsKey) {\\n\\n\\t\\t\\ttiddler = $tw.utils.updateTiddler({\\n\\t\\t\\t\\ttiddler: tiddler,\\n\\t\\t\\t\\tfields: [{ key: 'text', value: ipnsKey }]\\n\\t\\t\\t})\\n\\t\\t\\t$tw.wiki.addTiddler(tiddler)\\n\\t\\t\\tthis.ipnsKey_Lightbeam = ipnsKey\\n\\t\\t}\\n\\n\\t\\tthis.ipnsName_Lightbeam = ipnsName\\n\\t\\t\\n\\t\\treturn true\\n\\t}\\n\\n\\tLightbeamsAction.prototype.handleResolveIpnsKeyAndOpen_Lightbeam = async function (event) {\\n\\t\\tvar ipnsKey = null\\n\\t\\tvar resolvedUrl = null\\n\\t\\tvar ipnsName = $tw.utils.getIpfsIpnsName_Lightbeam()\\n\\t\\tipnsName =\\n\\t\\t\\tipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n\\t\\t\\t\\t? null\\n\\t\\t\\t\\t: ipnsName.trim()\\n\\t\\tif (ipnsName == null) {\\n\\t\\t\\t$tw.utils.alert(name, 'Undefined IPNS name....')\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\tvar { ipnsKey, resolvedUrl } = await $tw.ipfs.resolveUrl(\\n\\t\\t\\t\\ttrue,\\n\\t\\t\\t\\tfalse,\\n\\t\\t\\t\\t`/${ipnsKeyword}/${ipnsName}`\\n\\t\\t\\t)\\n\\t\\t} catch (error) {\\n\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\tvar tiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key')\\n\\t\\tif (tiddler !== undefined && this.ipnsKey_Lightbeam !== ipnsKey) {\\n\\t\\t\\ttiddler = $tw.utils.updateTiddler({\\n\\t\\t\\t\\ttiddler: tiddler,\\n\\t\\t\\t\\tfields: [{ key: 'text', value: ipnsKey }]\\n\\t\\t\\t})\\n\\t\\t\\tthis.ipnsKey_Lightbeam = ipnsKey\\n\\t\\t\\t$tw.wiki.addTiddler(tiddler)\\n\\t\\t}\\n\\t\\tthis.ipnsName_Lightbeam = ipnsName\\n\\t\\twindow.open(resolvedUrl.toString(), '_blank', 'noopener,noreferrer')\\n\\t\\treturn true\\n\\t}\\n\\n\\tLightbeamsAction.prototype.exportTiddlersAsJson = async function (\\n\\t\\texportFilter,\\n\\t\\texportUri,\\n\\t\\tspaces\\n\\t) {\\n\\t\\tvar tiddlers = $tw.wiki.filterTiddlers(exportFilter)\\n\\t\\tvar spaces =\\n\\t\\t\\tspaces === undefined ? $tw.config.preferences.jsonSpaces : spaces\\n\\t\\tvar data = []\\n\\t\\t// Process Tiddlers\\n\\t\\tfor (var t = 0; t < tiddlers.length; t++) {\\n\\t\\t\\t// Load Tiddler\\n\\t\\t\\tvar tiddler = $tw.wiki.getTiddler(tiddlers[t])\\n\\t\\t\\t// Process\\n\\t\\t\\tvar fields = {}\\n\\t\\t\\t// Process fields\\n\\t\\t\\tfor (var field in tiddler.fields) {\\n\\t\\t\\t\\t// Discard\\n\\t\\t\\t\\tif (field === 'tags' || field === '_export_uri') {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar ipnsKey = null\\n\\t\\t\\t\\tvar fieldValue = tiddler.getFieldString(field)\\n\\t\\t\\t\\tif (field === '_canonical_uri' && fieldValue === exportUri) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tif (field === '_import_uri' && fieldValue === exportUri) {\\n\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tvar { ipnsKey } = await $tw.ipfs.resolveUrl(false, false, fieldValue)\\n\\t\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\treturn null\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// IPNS\\n\\t\\t\\t\\tif (ipnsKey !== null) {\\n\\t\\t\\t\\t\\tfieldValue = `/${ipnsKeyword}/${ipnsKey}`\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Store field\\n\\t\\t\\t\\tfields[field] = fieldValue\\n\\t\\t\\t}\\n\\t\\t\\t// Process tags\\n\\t\\t\\tvar tags = tiddler.fields.tags\\n\\t\\t\\tif (tags !== undefined && tags !== null) {\\n\\t\\t\\t\\tvar tagValues = ''\\n\\t\\t\\t\\tfor (var i = 0; i < tags.length; i++) {\\n\\t\\t\\t\\t\\tconst tag = tags[i]\\n\\t\\t\\t\\t\\t// Discard\\n\\t\\t\\t\\t\\tif (tag === '$:/isExported' || tag === '$:/isImported') {\\n\\t\\t\\t\\t\\t\\tcontinue\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\ttagValues =\\n\\t\\t\\t\\t\\t\\t(tagValues.length === 0 ? '[[' : `${tagValues} [[`) + `${tag}]]`\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t// Store tags\\n\\t\\t\\t\\tfields.tags = tagValues\\n\\t\\t\\t}\\n\\t\\t\\t// Store\\n\\t\\t\\tdata.push(fields)\\n\\t\\t}\\n\\t\\treturn JSON.stringify(data, null, spaces)\\n\\t}\\n\\n\\texports.LightbeamsAction = LightbeamsAction\\n})()\\n\",\n \"title\": \"$:/plugins/astroport/lightbeams/lightbeams-action.js\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"library\",\n \"modified\": \"20221206122158841\",\n \"modifier\": \"Boris\"\n },\n \"$:/plugins/astroport/lightbeams/lightbeams-default.js\": {\n \"created\": \"20221205103617913\",\n \"creator\": \"Boris\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/astroport/lightbeams/saver/lightbeams-default.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: utils\\n\\nLightbeams Default\\n\\n\\\\*/\\n\\n;(function () {\\n\\t/*jslint node: true, browser: true */\\n\\t/*global $tw: false */\\n\\t'use strict'\\n\\n\\t/*\\n\\t * Retrieve ipfs saver ipns name with default value if applicable\\n\\t */\\n\\texports.getIpfsIpnsName_Lightbeam = function () {\\n\\t\\tvar ipnsName_Lightbeam = null\\n\\t\\tvar tiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name')\\n\\t\\tif (tiddler !== undefined && tiddler !== null) {\\n\\t\\t\\tvar text = tiddler.getFieldString('text')\\n\\t\\t\\ttext =\\n\\t\\t\\t\\ttext === undefined || text == null || text.trim() === ''\\n\\t\\t\\t\\t\\t? null\\n\\t\\t\\t\\t\\t: text.trim()\\n\\t\\t\\tif (text !== null) {\\n\\t\\t\\t\\tipnsName_Lightbeam = text\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn ipnsName_Lightbeam\\n\\t}\\n\\n\\t/*\\n\\t * Retrieve ipfs saver ipns key with default value if applicable\\n\\t */\\n\\texports.getIpfsIpnsKey_Lightbeam = function () {\\n\\t\\tvar ipnsKey_Lightbeam = null\\n\\t\\tvar tiddler = $tw.wiki.getTiddler('$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key')\\n\\t\\tif (tiddler !== undefined && tiddler !== null) {\\n\\t\\t\\tvar text = tiddler.getFieldString('text')\\n\\t\\t\\ttext =\\n\\t\\t\\t\\ttext === undefined || text == null || text.trim() === ''\\n\\t\\t\\t\\t\\t? null\\n\\t\\t\\t\\t\\t: text.trim()\\n\\t\\t\\tif (text !== null) {\\n\\t\\t\\t\\tipnsKey_Lightbeam = text\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\treturn ipnsKey_Lightbeam\\n\\t}\\n})()\\n\",\n \"title\": \"$:/plugins/astroport/lightbeams/lightbeams-default.js\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"utils\",\n \"modified\": \"20221205142532415\",\n \"modifier\": \"Boris\"\n },\n \"$:/plugins/astroport/lightbeams/lightbeams-saver.js\": {\n \"created\": \"20221205142557663\",\n \"creator\": \"Boris\",\n \"text\": \"/*\\\\\\ntitle: $:/plugins/astroport/lightbeams/lightbeams-saver.js\\ntype: application/javascript\\ntags: $:/ipfs/core\\nmodule-type: saver\\n\\nLightbeam Saver\\n\\n\\\\*/\\n\\n;(function () {\\n\\t/*jslint node: true, browser: true */\\n\\t/*global $tw: false */\\n\\t'use strict'\\n\\n\\tconst log = require('$:/plugins/ipfs/loglevel/loglevel.js')\\n\\n\\tconst LightbeamsAction = require('$:/plugins/astroport/lightbeams/lightbeams-action.js').LightbeamsAction\\n\\n\\tconst ensKeyword = 'ens'\\n\\tconst ipfsKeyword = 'ipfs'\\n\\tconst ipnsKeyword = 'ipns'\\n\\n\\tconst name = 'lightbeam-saver'\\n\\n\\t/*\\n\\t * Select the appropriate saver module and set it up\\n\\t */\\n\\tvar LightbeamSaver = function (wiki) {\\n\\t\\tthis.wiki = wiki\\n\\t\\tthis.apiUrl = null\\n\\t\\tthis.ipfsProvider = null\\n\\t\\t// Loglevel\\n\\t\\tif (window.log === undefined || window.log == null) {\\n\\t\\t\\t// Init\\n\\t\\t\\twindow.log = log.noConflict()\\n\\t\\t\\tif ($tw.utils.getIpfsVerbose()) {\\n\\t\\t\\t\\tlog.setLevel('info', false)\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tlog.setLevel('warn', false)\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tthis.lightbeamsAction = new LightbeamsAction()\\n\\t\\t// Init\\n\\t\\tthis.lightbeamsAction.init()\\n\\t}\\n\\n\\tLightbeamSaver.prototype.getLogger = function () {\\n\\t\\treturn window.log.getLogger(name)\\n\\t}\\n\\n\\tLightbeamSaver.prototype.save = async function (text, method, callback, options) {\\n\\t\\t\\n\\t\\tconsole.log('Entering Lightbeams saver…')\\n\\n\\t\\tif ($tw.saverHandler.isDirty() === false) {\\n\\t\\t\\treturn false\\n\\t\\t}\\n\\t\\ttry {\\n\\t\\t\\t\\n\\t\\t\\t$tw.wiki.deleteTiddler('$:/plugins/astroport/lightbeams/myFeed')\\n\\n\\t\\t\\tlet daysLimit = 14\\n\\t\\t\\tlet maxItemsNb = 20\\n\\n\\t\\t\\tlet now = new Date()\\n\\t\\t\\tlet dateLimit = new Date()\\n\\n\\t\\t\\tdateLimit.setDate(now.getDate() - daysLimit)\\n\\t\\t\\t\\n\\t\\t\\tlet dateLimitStr = \\n\\t\\t\\t\\t dateLimit.getFullYear().toString() \\n\\t\\t\\t\\t+ (dateLimit.getMonth() + 1).toString().padStart(2,0)\\n\\t\\t\\t\\t+ (dateLimit.getDate() + 1).toString().padStart(2,0)\\n\\t\\t\\t\\t+ dateLimit.getHours().toString().padStart(2,0)\\n\\t\\t\\t\\t+ dateLimit.getMinutes().toString().padStart(2,0)\\n\\t\\t\\t\\t+ dateLimit.getSeconds().toString().padStart(2,0)\\n\\t\\t\\t\\t+ dateLimit.getMilliseconds().toString().padStart(3,0)\\n\\n\\t\\t\\tlet jsonFeed = $tw.wiki.getTiddlersAsJson('[all[tiddlers]!is[system]!sort[created]] :filter[get[created]compare:string:gteq['+ dateLimitStr +']] +[limit['+ maxItemsNb +']]')\\n\\t\\t\\tlet ipnsKey_Lightbeam = $tw.utils.getIpfsIpnsKey_Lightbeam()\\n\\t\\t\\tlet ipnsName_Lightbeam = $tw.utils.getIpfsIpnsName_Lightbeam()\\n\\n\\t\\t\\tvar cid = null\\n\\t\\t\\tvar ipnsCid = null\\n\\t\\t\\tvar ipnsKey = null\\n\\t\\t\\tvar ipnsName = null\\n\\t\\t\\tvar ensDomain = null\\n\\t\\t\\tvar ensCid = null\\n\\t\\t\\tvar options = options || {}\\n\\t\\t\\tconst wiki = $tw.ipfs.getDocumentUrl()\\n\\t\\t\\tconst base = $tw.ipfs.getIpfsBaseUrl()\\n\\t\\t\\tconst nextWiki = $tw.ipfs.getUrl(wiki)\\n\\t\\t\\tnextWiki.protocol = base.protocol\\n\\t\\t\\tnextWiki.host = base.host\\n\\t\\t\\tnextWiki.port = base.port\\n\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tvar { cid, ipnsKey } = await $tw.ipfs.resolveUrl(false, true, wiki)\\n\\t\\t\\t\\tif (cid != null) {\\n\\t\\t\\t\\t\\tawait $tw.ipfs.requestToUnpin(cid)\\n\\t\\t\\t\\t}\\n\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t\\tcallback(error.message)\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t}\\n\\t\\t\\t// IPNS\\n\\t\\t\\tif (ipnsKey !== null || $tw.utils.getIpfsProtocol() === ipnsKeyword) {\\n\\t\\t\\t\\t// Resolve current IPNS\\n\\t\\t\\t\\t/*\\n\\t\\t\\t\\tif (ipnsKey !== null) {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tvar { cid: ipnsCid, ipnsName } = await $tw.ipfs.resolveUrl(\\n\\t\\t\\t\\t\\t\\t\\ttrue,\\n\\t\\t\\t\\t\\t\\t\\tfalse,\\n\\t\\t\\t\\t\\t\\t\\twiki\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t*/\\n\\t\\t\\t\\t\\t// Default IPNS\\n\\t\\t\\t\\t\\tipnsKey = $tw.utils.getIpfsIpnsKey()\\n\\t\\t\\t\\t\\tipnsKey =\\n\\t\\t\\t\\t\\t\\tipnsKey === undefined || ipnsKey == null || ipnsKey.trim() === ''\\n\\t\\t\\t\\t\\t\\t\\t? null\\n\\t\\t\\t\\t\\t\\t\\t: ipnsKey.trim()\\n\\t\\t\\t\\t\\tipnsName = $tw.utils.getIpfsIpnsName()\\n\\t\\t\\t\\t\\tipnsName =\\n\\t\\t\\t\\t\\t\\tipnsName === undefined || ipnsName == null || ipnsName.trim() === ''\\n\\t\\t\\t\\t\\t\\t\\t? null\\n\\t\\t\\t\\t\\t\\t\\t: ipnsName.trim()\\n\\t\\t\\t\\t\\tif (ipnsKey == null && ipnsName == null) {\\n\\t\\t\\t\\t\\t\\tcallback(null, 'Unknown default IPNS identifiers...')\\n\\t\\t\\t\\t\\t\\treturn true\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tthis.getLogger().info('Processing default IPNS identifiers...')\\n\\t\\t\\t\\t\\tvar identifier = ipnsKey\\n\\t\\t\\t\\t\\tif (identifier == null) {\\n\\t\\t\\t\\t\\t\\tidentifier = ipnsName\\n\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tvar { cid: ipnsCid, ipnsKey_osef, ipnsName_osef } = await $tw.ipfs.resolveUrl(\\n\\t\\t\\t\\t\\t\\t\\ttrue,\\n\\t\\t\\t\\t\\t\\t\\tfalse,\\n\\t\\t\\t\\t\\t\\t\\t`/${ipnsKeyword}/${identifier}`\\n\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\t}\\n\\n\\n\\t\\t\\t\\t\\t// var identifier_Lightbeam = ipnsKey_Lightbeam\\n\\t\\t\\t\\t\\t// if (identifier_Lightbeam == null) {\\n\\t\\t\\t\\t\\t// \\tidentifier_Lightbeam = ipnsName_Lightbeam\\n\\t\\t\\t\\t\\t// }\\n\\t\\t\\t\\t\\t// \\n\\t\\t\\t\\t\\t// try {\\n\\t\\t\\t\\t\\t// \\tvar { cid: ipnsCid_Lightbeam, ipnsKey_osef, ipnsName_osef } = await $tw.ipfs.resolveUrl(\\n\\t\\t\\t\\t\\t// \\t\\ttrue,\\n\\t\\t\\t\\t\\t// \\t\\tfalse,\\n\\t\\t\\t\\t\\t// \\t\\t`/${ipnsKeyword}/${identifier_Lightbeam}`\\n\\t\\t\\t\\t\\t// \\t)\\n\\t\\t\\t\\t\\t// } catch (error) {\\n\\t\\t\\t\\t\\t// \\tthis.getLogger().error(error)\\n\\t\\t\\t\\t\\t// \\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\t// }\\n\\n\\t\\t\\t\\t//}\\n\\n\\t\\t\\t\\tif (ipnsCid != null) {\\n\\t\\t\\t\\t\\tawait $tw.ipfs.requestToUnpin(ipnsCid)\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// if (ipnsCid_Lightbeam != null) {\\n\\t\\t\\t\\t// \\tawait $tw.ipfs.requestToUnpin(ipnsCid_Lightbeam)\\n\\t\\t\\t\\t// }\\n\\t\\t\\t}\\n\\t\\t\\t// ENS\\n\\t\\t\\tif ($tw.utils.getIpfsProtocol() === ensKeyword) {\\n\\t\\t\\t\\tensDomain = $tw.utils.getIpfsEnsDomain()\\n\\t\\t\\t\\tif (ensDomain == null) {\\n\\t\\t\\t\\t\\tcallback(null, 'Undefined ENS domain...')\\n\\t\\t\\t\\t\\treturn true\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar { cid: ensCid } = await $tw.ipfs.resolveUrl(false, true, ensDomain)\\n\\t\\t\\t\\tif (ensCid != null) {\\n\\t\\t\\t\\t\\tawait $tw.ipfs.requestToUnpin(ensCid)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t// Upload current document\\n\\t\\t\\tthis.getLogger().info(`Uploading wiki: ${text.length} bytes`)\\n\\t\\t\\t// Add\\n\\t\\t\\t// $tw.utils.alert(name, `Coucou avant ajout`)\\n\\t\\t\\tconst { added } = await $tw.ipfs.addToIpfs(text)\\n\\t\\t\\tconst { added : added_Lightbeam } = await $tw.ipfs.addToIpfs(jsonFeed)\\n\\n\\n\\t\\t\\t// $tw.utils.alert(name, `Coucou après ajout`)\\n\\t\\t\\t// Default next\\n\\t\\t\\tnextWiki.pathname = `/${ipfsKeyword}/${added}`\\n\\t\\t\\t// Pin\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tawait $tw.ipfs.pinToIpfs(added)\\n\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\tthis.getLogger().warn(error)\\n\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t}\\n\\t\\t\\t// Pin Lightbeam\\n\\t\\t\\t// try {\\n\\t\\t\\t// \\tawait $tw.ipfs.pinToIpfs(added_Lightbeam)\\n\\t\\t\\t// } catch (error) {\\n\\t\\t\\t// \\tthis.getLogger().warn(error)\\n\\t\\t\\t// \\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t// }\\n\\n\\t\\t\\t// Publish to IPNS\\n\\t\\t\\tif (ipnsKey !== null && ipnsName !== null) {\\n\\t\\t\\t\\t$tw.utils.alert(name, `Publishing IPNS names:<br />- ${ipnsName}<br />- ${ipnsName_Lightbeam}`)\\n\\t\\t\\t\\ttry {\\n\\n\\t\\t\\t\\t\\tawait $tw.ipfs.publishIpnsName(added_Lightbeam, ipnsKey_Lightbeam, ipnsName_Lightbeam)\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, `Successfully Published IPNS name: ${ipnsName_Lightbeam}`)\\n\\n\\t\\t\\t\\t\\tawait $tw.ipfs.publishIpnsName(added, ipnsKey, ipnsName)\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, `Successfully Published IPNS name: ${ipnsName}`)\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tnextWiki.pathname = `/${ipnsKeyword}/${ipnsKey}`\\n\\n\\t\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\t\\tthis.getLogger().warn(error)\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\t$tw.ipfs.requestToPin(ipnsCid)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t// Publish to ENS\\n\\t\\t\\tif ($tw.utils.getIpfsProtocol() === ensKeyword) {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, `Publishing to ENS: ${ensDomain}`)\\n\\t\\t\\t\\t\\tawait $tw.ipfs.setEns(ensDomain, added)\\n\\t\\t\\t\\t\\t// const chainId = $tw.ipfs.getChainId()\\n\\t\\t\\t\\t\\t// if (chainId !== null && chainId === 1) {\\n\\t\\t\\t\\t\\t// nextWiki.protocol = 'https:'\\n\\t\\t\\t\\t\\t// nextWiki.host = ensDomain\\n\\t\\t\\t\\t\\t// } else {\\n\\t\\t\\t\\t\\tconst { resolvedUrl } = await $tw.ipfs.resolveEns(ensDomain)\\n\\t\\t\\t\\t\\tnextWiki.protocol = resolvedUrl.protocol\\n\\t\\t\\t\\t\\tnextWiki.host = resolvedUrl.host\\n\\t\\t\\t\\t\\tnextWiki.pathname = resolvedUrl.pathname\\n\\t\\t\\t\\t\\t// }\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, `Successfully published to ENS: ${ensDomain}`)\\n\\t\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\t\\tthis.getLogger().warn(error)\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\t$tw.ipfs.requestToPin(ensCid)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t$tw.ipfs.pin = []\\n\\t\\t\\t// Unpin\\n\\t\\t\\tif ($tw.utils.getIpfsUnpin()) {\\n\\t\\t\\t\\tfor (var i in $tw.ipfs.unpin) {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tconst unpin = $tw.ipfs.unpin[i]\\n\\t\\t\\t\\t\\t\\tawait $tw.ipfs.unpinFromIpfs(unpin)\\n\\t\\t\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\t\\t\\tthis.getLogger().warn(error)\\n\\t\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\t$tw.ipfs.unpin = []\\n\\t\\t\\t// Pin\\n\\t\\t\\tfor (var i in $tw.ipfs.pin) {\\n\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\tconst pin = $tw.ipfs.pin[i]\\n\\t\\t\\t\\t\\tawait $tw.ipfs.pinToIpfs(pin)\\n\\t\\t\\t\\t} catch (error) {\\n\\t\\t\\t\\t\\tthis.getLogger().warn(error)\\n\\t\\t\\t\\t\\t$tw.utils.alert(name, error.message)\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t\\tcallback(null)\\n\\t\\t\\tif (nextWiki.host !== wiki.host || nextWiki.pathname !== wiki.pathname) {\\n\\t\\t\\t\\twindow.location.assign(nextWiki.toString())\\n\\t\\t\\t}\\n\\t\\t} catch (error) {\\n\\t\\t\\tthis.getLogger().error(error)\\n\\t\\t\\tcallback(error.message)\\n\\t\\t\\treturn true\\n\\t\\t}\\n\\t\\tcallback(null)\\n\\t\\treturn true\\n\\t}\\n\\n\\t/*\\n\\t * Information about this saver\\n\\t */\\n\\tLightbeamSaver.prototype.info = {\\n\\t\\tname: 'Astroport :: Lightbeams',\\n\\t\\tpriority: 3100,\\n\\t\\tcapabilities: ['save']\\n\\t}\\n\\n\\t/*\\n\\t * Static method that returns true if this saver is capable of working\\n\\t */\\n\\texports.canSave = function (wiki) {\\n\\t\\treturn true\\n\\t}\\n\\n\\t/*\\n\\t * Create an instance of this saver\\n\\t */\\n\\texports.create = function (wiki) {\\n\\t\\treturn new LightbeamSaver(wiki)\\n\\t}\\n})()\\n\",\n \"title\": \"$:/plugins/astroport/lightbeams/lightbeams-saver.js\",\n \"type\": \"application/javascript\",\n \"tags\": \"$:/ipfs/core\",\n \"module-type\": \"saver\",\n \"modified\": \"20221206123150589\",\n \"modifier\": \"Boris\"\n },\n \"$:/plugins/astroport/lightbeams/Buttons/Homefeed\": {\n \"created\": \"20221130140514338\",\n \"creator\": \"Boris\",\n \"text\": \"\\\\whitespace trim\\n<span class=\\\"tc-popup-keep\\\">\\n<$button tooltip=\\\"Aller au fil d'actualité\\\" class=<<tv-config-toolbar-class>> selectedClass=\\\"tc-selected\\\">\\n<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n{{$:/core/images/storyview-classic}}\\n</$list>\\n\\n<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n<span class=\\\"tc-btn-text\\\"><$text text=\\\"Fil d'actualité\\\" /></span>\\n</$list>\\n\\n<$action-sendmessage $message=\\\"tm-close-all-tiddlers\\\" />\\n\\n<$action-navigate $to=\\\"$:/plugins/astroport/lightbeams/HomeFeed\\\" $scroll=\\\"no\\\" />\\n\\n</$button>\\n</span>\",\n \"title\": \"$:/plugins/astroport/lightbeams/Buttons/Homefeed\",\n \"caption\": \"{{$:/core/images/preview-open}} Homefeed\",\n \"description\": \"Affiche le fil d'actualités\",\n \"modified\": \"20221205163015472\",\n \"modifier\": \"Boris\",\n \"tags\": \"$:/tags/PageControls\"\n },\n \"$:/plugins/astroport/lightbeams/ControlPanel/Saving/Astroport :: Lightbeams\": {\n \"created\": \"20221205092311632\",\n \"creator\": \"Boris\",\n \"text\": \"\\\\define lingo-base() $:/language/ControlPanel/Saving/IpfsService/\\n\\\\define service-name() Lightbeams\\n\\n\\n\\n<fieldset>\\n\\t<legend>\\n\\t\\tAbonnements\\n\\t</legend>\\n\\n\\n\\t<p>\\n\\t\\t<$edit-text tiddler=\\\"$:/plugins/astroport/lightbeams/state/subscriptions\\\" class=\\\"tc-edit-texteditor\\\" default=\\\"\\\" tag=\\\"textarea\\\"/>\\n\\t</p>\\n</fieldset>\\n\\n\\n<fieldset>\\n\\t<legend>\\n\\t\\tLightbeam :: adresse de publication du flux JSON\\n\\t</legend>\\n\\n\\t<p>\\n\\t\\t<label>\\n\\t\\t\\t<$link to=\\\"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name\\\">\\n\\t\\t\\t\\t<<lingo IpnsName>>\\n\\t\\t\\t</$link>\\n\\t\\t\\t<$edit-text tiddler=\\\"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-name\\\" class=\\\"tc-edit-texteditor\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\t\\t</label>\\n\\t\\t<label>\\n\\t\\t\\t<$link to=\\\"$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key\\\">\\n\\t\\t\\t\\t<<lingo IpnsKey>>\\n\\t\\t\\t</$link>\\n\\t\\t\\t<$text text={{$:/plugins/astroport/lightbeams/saver/ipns/lightbeam-key}} class=\\\"tc-edit-texteditor\\\"/>\\n\\t\\t</label>\\n\\t</p>\\n\\n\\n\\t<div style=\\\"display: flex; flex-direction: row; margin: auto; justify-content: space-evenly;\\\">\\n\\n\\t\\t<$button message=\\\"tm-lightbeam-ipns-rename\\\" tooltip={{$:/language/Buttons/Ipns/Rename/Hint}} aria-label={{$:/language/Buttons/Ipns/Rename/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/mono-line}}\\n\\t\\t\\t</$list>\\n\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Rename/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t<$button message=\\\"tm-lightbeam-ipns-generate\\\" tooltip={{$:/language/Buttons/Ipns/Generate/Hint}} aria-label={{$:/language/Buttons/Ipns/Generate/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/new-here-button}}\\n\\t\\t\\t</$list>\\n\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Generate/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t<$button message=\\\"tm-lightbeam-ipns-remove\\\" tooltip={{$:/language/Buttons/Ipns/Remove/Hint}} aria-label={{$:/language/Buttons/Ipns/Remove/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/delete-button}}\\n\\t\\t\\t</$list>\\n\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Remove/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t<$button message=\\\"tm-lightbeam-ipns-fetch\\\" tooltip={{$:/language/Buttons/Ipns/Fetch/Hint}} aria-label={{$:/language/Buttons/Ipns/Fetch/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/refresh-button}}\\n\\t\\t\\t</$list>\\n\\t\\t\\t\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Fetch/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t<$button message=\\\"tm-lightbeam-ipns-resolve-and-open\\\" tooltip={{$:/language/Buttons/Ipns/Resolve/And/Open/Hint}} aria-label={{$:/language/Buttons/Ipns/Resolve/And/Open/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/globe}}\\n\\t\\t\\t</$list>\\n\\t\\t\\t\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Resolve/And/Open/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t</div>\\n</fieldset>\\n\\n<fieldset>\\n\\t<legend>\\n\\t\\tTiddlyWiki :: adresse de publication de l'HTML\\n\\t</legend>\\n\\n\\t<p>\\n\\t\\t<label>\\n\\t\\t\\t<$link to=\\\"$:/ipfs/saver/ipns/name\\\">\\n\\t\\t\\t\\t<<lingo IpnsName>>\\n\\t\\t\\t</$link>\\n\\t\\t\\t<$edit-text tiddler=\\\"$:/ipfs/saver/ipns/name\\\" class=\\\"tc-edit-texteditor\\\" default=\\\"\\\" tag=\\\"input\\\"/>\\n\\t\\t</label>\\n\\t\\t<label>\\n\\t\\t\\t<$link to=\\\"$:/ipfs/saver/ipns/key\\\">\\n\\t\\t\\t\\t<<lingo IpnsKey>>\\n\\t\\t\\t</$link>\\n\\t\\t\\t<$text text={{$:/ipfs/saver/ipns/key}} class=\\\"tc-edit-texteditor\\\"/>\\n\\t\\t</label>\\n\\t</p>\\n\\n\\n\\t<div style=\\\"display: flex; flex-direction: row; margin: auto; justify-content: space-evenly;\\\">\\n\\n\\t\\t<$button message=\\\"tm-ipns-rename\\\" tooltip={{$:/language/Buttons/Ipns/Rename/Hint}} aria-label={{$:/language/Buttons/Ipns/Rename/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/mono-line}}\\n\\t\\t\\t</$list>\\n\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Rename/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t\\t<$button message=\\\"tm-ipns-generate\\\" tooltip={{$:/language/Buttons/Ipns/Generate/Hint}} aria-label={{$:/language/Buttons/Ipns/Generate/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/new-here-button}}\\n\\t\\t\\t</$list>\\n\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Generate/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t<$button message=\\\"tm-ipns-remove\\\" tooltip={{$:/language/Buttons/Ipns/Remove/Hint}} aria-label={{$:/language/Buttons/Ipns/Remove/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/delete-button}}\\n\\t\\t\\t</$list>\\n\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Remove/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t<$button message=\\\"tm-ipns-fetch\\\" tooltip={{$:/language/Buttons/Ipns/Fetch/Hint}} aria-label={{$:/language/Buttons/Ipns/Fetch/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/refresh-button}}\\n\\t\\t\\t</$list>\\n\\t\\t\\t\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Fetch/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t\\t<$button message=\\\"tm-ipns-resolve-and-open\\\" tooltip={{$:/language/Buttons/Ipns/Resolve/And/Open/Hint}} aria-label={{$:/language/Buttons/Ipns/Resolve/And/Open/Caption}} class=\\\"tc-btn-invisible tc-ipfs-action\\\">\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-icons>match[yes]]\\\">\\n\\t\\t\\t\\t{{$:/core/images/globe}}\\n\\t\\t\\t</$list>\\n\\t\\t\\t\\n\\t\\t\\t<$list filter=\\\"[<tv-config-toolbar-text>match[yes]]\\\">\\n\\t\\t\\t\\t<span class=\\\"tc-btn-text\\\"><$text text={{$:/language/Buttons/Ipns/Resolve/And/Open/Caption}}/></span>\\n\\t\\t\\t</$list>\\n\\t\\t</$button>\\n\\n\\t</div>\\n</fieldset>\\n\\n\\n<fieldset>\\n\\t<legend>\\n\\t\\t<<lingo Url>>\\n\\t</legend>\\n\\n\\t<label>\\n\\t\\t<$link to=\\\"$:/ipfs/saver/api\\\"><<lingo ApiUrl>></$link> :\\n\\t\\t<$select tiddler=\\\"$:/ipfs/saver/api\\\" default=\\\"$:/ipfs/saver/api/https/tube.copylaradio.com/5001\\\" class=\\\"tc-edit-texteditor\\\">\\n\\t\\t\\t<$list filter=\\\"[all[shadows+tiddlers]tag[$:/ipfs/saver/api]!has[draft.of]]\\\">\\n\\t\\t\\t\\t<option value=<<currentTiddler>>>\\n\\t\\t\\t\\t\\t<$transclude field=\\\"text\\\">\\n\\t\\t\\t\\t\\t\\t<$text text=<<currentTiddler>>/>\\n\\t\\t\\t\\t\\t</$transclude>\\n\\t\\t\\t\\t</option>\\n\\t\\t\\t</$list>\\n\\t\\t</$select>\\n\\t</label>\\n\\n\\t<label>\\n\\t\\t<$link to=\\\"$:/ipfs/saver/gateway\\\"><<lingo GatewayUrl>></$link> :\\n\\t\\t<$select tiddler=\\\"$:/ipfs/saver/gateway\\\" default=\\\"$:/ipfs/saver/gateway/https/tube.copylaradio.com\\\" class=\\\"tc-edit-texteditor\\\">\\n\\t\\t\\t<$list filter=\\\"[all[shadows+tiddlers]tag[$:/ipfs/saver/gateway]!has[draft.of]]\\\">\\n\\t\\t\\t\\t<option value=<<currentTiddler>>>\\n\\t\\t\\t\\t\\t<$transclude field=\\\"text\\\">\\n\\t\\t\\t\\t\\t\\t<$text text=<<currentTiddler>>/>\\n\\t\\t\\t\\t\\t</$transclude>\\n\\t\\t\\t\\t</option>\\n\\t\\t\\t</$list>\\n\\t\\t</$select>\\n\\t</label>\\n\\n</fieldset>\\n\\n\\n<fieldset>\\n\\t<legend>\\n\\t\\tAvancé\\n\\t</legend>\\n\\n\\n\\t<h3>\\n\\t\\t<$link to=\\\"$:/ipfs/saver/protocol\\\">\\n\\t\\t\\t<<lingo Protocol>>\\n\\t\\t</$link>\\n\\t</h3>\\n\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/protocol\\\" value=\\\"ipfs\\\">\\n\\t\\t<<lingo Protocol/Ipfs/Description>>\\n\\t</$radio>\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/protocol\\\" value=\\\"ipns\\\">\\n\\t\\t<<lingo Protocol/Ipns/Description>>\\n\\t</$radio>\\n\\n\\n\\t<h3>\\n\\t\\t<<lingo Global>>\\n\\t</h3>\\n\\n\\t<p>\\n\\t\\t<label>\\n\\t\\t\\t<$checkbox tiddler=\\\"$:/ipfs/saver/verbose\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"yes\\\"/>\\n\\t\\t\\t<$link to=\\\"$:/ipfs/saver/verbose\\\"><<lingo Verbose/Description>></$link>\\n\\t\\t</label>\\n\\t\\t\\n\\t\\t<label>\\n\\t\\t\\t<$checkbox tiddler=\\\"$:/ipfs/saver/unpin\\\" field=\\\"text\\\" checked=\\\"yes\\\" unchecked=\\\"no\\\" default=\\\"no\\\"/>\\n\\t\\t\\t<$link to=\\\"$:/ipfs/saver/unpin\\\"><<lingo Unpin/Description>></$link>\\n\\t\\t</label>\\n\\t</p>\\n\\n\\n\\t<h3>\\n\\t\\t<$link to=\\\"$:/ipfs/saver/provider\\\"><<lingo Provider>></$link>\\n\\t</h3>\\n\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/provider\\\" value=\\\"default\\\"><<lingo Provider/Default/Description>></$radio>\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/provider\\\" value=\\\"window\\\"><<lingo Provider/Window/Description>></$radio>\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/provider\\\" value=\\\"http\\\"><<lingo Provider/HTTP/Description>></$radio>\\n\\n\\n\\t<h3>\\n\\t\\t<$link to=\\\"$:/ipfs/saver/policy\\\">\\n\\t\\t\\t<<lingo Policy>>\\n\\t\\t</$link>\\n\\t</h3>\\n\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/policy\\\" value=\\\"origin\\\"><<lingo Policy/Origin/Description>></$radio>\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/policy\\\" value=\\\"gateway\\\"><<lingo Policy/Gateway/Description>></$radio>\\n\\n\\n\\t<h3>\\n\\t\\t<$link to=\\\"$:/ipfs/saver/export\\\">\\n\\t\\t\\t<<lingo Export>>\\n\\t\\t</$link>\\n\\t</h3>\\n\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/export\\\" value=\\\"json\\\">\\n\\t\\t<<lingo Export/Json/Description>>\\n\\t</$radio>\\n\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/export\\\" value=\\\"static\\\">\\n\\t\\t<<lingo Export/Static/Description>>\\n\\t</$radio>\\n\\n\\t<$radio tiddler=\\\"$:/ipfs/saver/export\\\" value=\\\"tid\\\">\\n\\t\\t<<lingo Export/Tid/Description>>\\n\\t</$radio>\\n\\n</fieldset>\",\n \"title\": \"$:/plugins/astroport/lightbeams/ControlPanel/Saving/Astroport :: Lightbeams\",\n \"modified\": \"20221205151913439\",\n \"tags\": \"$:/ipfs/core $:/tags/ControlPanel/Saving\",\n \"caption\": \"Astroport :: Lightbeams\",\n \"modifier\": \"Boris\"\n },\n \"$:/plugins/astroport/lightbeams/layouts/feedable\": {\n \"created\": \"20221130141048325\",\n \"creator\": \"Boris\",\n \"text\": \"\\\\whitespace trim\\n\\\\define containerClasses()\\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\\n\\\\end\\n\\\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\\n\\n<$vars\\n\\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\\n\\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\\n\\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\\n\\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\\n\\ttv-show-missing-links={{$:/config/MissingLinks}}\\n\\tstoryviewTitle={{$:/view}}\\n\\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\\n\\n<div class=<<containerClasses>>>\\n\\n<$transclude tiddler=\\\"$:/plugins/astroport/lightbeams/ui/HomeFeed\\\"/>\\n\\n<$navigator story=\\\"$:/StoryList\\\" history=\\\"$:/HistoryList\\\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\\n\\n<$dropzone enable=<<tv-enable-drag-and-drop>> autoOpenOnImport=\\\"yes\\\">\\n\\n<$list filter=\\\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\\\" variable=\\\"listItem\\\">\\n\\n<$transclude tiddler=<<listItem>>/>\\n\\n</$list>\\n\\n</$dropzone>\\n\\n</$navigator>\\n\\n</div>\\n\\n</$vars>\\n\",\n \"tags\": \"$:/tags/Layout\",\n \"title\": \"$:/plugins/astroport/lightbeams/layouts/feedable\",\n \"modified\": \"20221205163129833\",\n \"modifier\": \"Boris\",\n \"name\": \"Feedable\",\n \"description\": \"En mode avec un fil d'actualité\"\n },\n \"$:/plugins/astroport/lightbeams/tests/friends\": {\n \"created\": \"20221130195042105\",\n \"creator\": \"Boris\",\n \"text\": \"<<friends>>\\n\\n!! Envoyées\\n\\n<$transclude tiddler=\\\"$:/plugins/astroport/lightbeams/state/stars_sendees\\\" field=\\\"text\\\" />\\n\\n!! Reçues\\n\\n<$transclude tiddler=\\\"$:/plugins/astroport/lightbeams/state/stars_senders\\\" field=\\\"text\\\" />\",\n \"tags\": \"\",\n \"title\": \"$:/plugins/astroport/lightbeams/tests/friends\",\n \"modified\": \"20221204165827491\",\n \"modifier\": \"Boris\"\n },\n \"$:/plugins/astroport/lightbeams/ui/HomeFeed\": {\n \"created\": \"20221130141830129\",\n \"creator\": \"Boris\",\n \"text\": \"<section id=\\\"homefeed\\\">\\n<$list filter=\\\"[list[$:/StoryList]match[$:/plugins/astroport/lightbeams/HomeFeed]]\\\" variable=\\\"null\\\">\\n<h1>Votre fil d'actus</h1>\\n<dl>\\n<dt>macrocall:</dt>\\n<dd><$macrocall $name=\\\"homefeed\\\" /></dd>\\n</dl>\\n<$transclude tiddler=\\\"$:/plugins/astroport/lightbeams/myFeed\\\" />\\n</$list>\\n</section>\",\n \"tags\": \"\",\n \"title\": \"$:/plugins/astroport/lightbeams/ui/HomeFeed\",\n \"modified\": \"20221204181056753\",\n \"modifier\": \"Boris\"\n }\n }\n}","tags":"","title":"$:/plugins/astroport/lightbeams","modified":"20221206123924028","modifier":"Boris","type":"application/json","author":"Astroport","name":"Astroport :: Lightbeams ::","description":"send signals accross the universe","plugin-type":"plugin","version":"0.0.8"}]