Internal improvements

This commit is contained in:
octospacc 2023-04-23 00:48:14 +02:00
parent 0ec5864e54
commit 12d4db5953
7 changed files with 65 additions and 21 deletions

View File

@ -31,6 +31,9 @@ var ApiSchema = {
Mastodon: "account", Mastodon: "account",
Misskey: "user", Misskey: "user",
}, },
Quoting: {
Mastodon: "reblog",
},
Time: { Time: {
Mastodon: "created_at", Mastodon: "created_at",
Misskey: "createdAt", Misskey: "createdAt",
@ -57,24 +60,34 @@ var ApiSchema = {
Mastodon: "display_name", Mastodon: "display_name",
Misskey: "name", Misskey: "name",
}, },
Type: {}, // user, bot, channel, group Type: { // user, bot, channel, group
Mastodon: {"__Eval__": `
var Type;
if (TreeOld.bot) Type = 'Bot';
if (TreeOld.group) Type = 'Group';
TreeNew[KeyNew] = Type;
`},
},
Url: { Url: {
Mastodon: "url", Mastodon: "url",
}, },
}, },
}; };
function ApiTransform(Data, FromSource, DestType) {
return JsonTransformB(Data, ApiSchema, ApiSchema[DestType], FromSource);
};
/*
var TransParsers = { var TransParsers = {
Mastodon: { Mastodon: {
Account(Data) { Account(Data) {
//return JsonTransformA(Data, TransSchemas.Mastodon.Author, TransSchemas.Mastodon); //return JsonTransformA(Data, TransSchemas.Mastodon.Author, TransSchemas.Mastodon);
return JsonTransformB(Data, ApiSchema, ApiSchema.Profile, 'Mastodon'); return JsonTransformB(Data, ApiSchema, ApiSchema.Profile, 'Mastodon');
}, },
/*
Instance(Data) { Instance(Data) {
return JsonTransformA(Data, TransSchemas.Mastodon.Instance, TransSchemas.Mastodon); return JsonTransformA(Data, TransSchemas.Mastodon.Instance, TransSchemas.Mastodon);
}, },
*/
Status(Data) { Status(Data) {
//return JsonTransformA(Data, TransSchemas.Mastodon.Status, TransSchemas.Mastodon); //return JsonTransformA(Data, TransSchemas.Mastodon.Status, TransSchemas.Mastodon);
return JsonTransformB(Data, ApiSchema, ApiSchema.Note, 'Mastodon'); return JsonTransformB(Data, ApiSchema, ApiSchema.Note, 'Mastodon');
@ -83,3 +96,4 @@ var TransParsers = {
Misskey: { Misskey: {
}, },
}; };
*/

View File

@ -30,7 +30,7 @@ FakeApi.Mastodon.Account = {
url: "https://mastodon.example.com/@Tester", url: "https://mastodon.example.com/@Tester",
}; };
FakeApi.Friendiiverse.Featured.Featured.push( FakeApi.Friendiiverse.Featured.Featured.push(
TransParsers.Mastodon.Account(FakeApi.Mastodon.Account)); ApiTransform(FakeApi.Mastodon.Account, 'Mastodon', 'Profile'));
FakeApi.Mastodon.Status = { FakeApi.Mastodon.Status = {
account: FakeApi.Mastodon.Account, account: FakeApi.Mastodon.Account,

View File

@ -13,6 +13,7 @@ var FriendicaCredentials = 'redacted:redacted';
// Development // Development
var Debug = true; var Debug = true;
var UseFakeApi = true; var UseFakeApi = true;
var UserData = {};
</script> </script>
</head> </head>
<body> <body>
@ -26,15 +27,12 @@ var UseFakeApi = true;
</div> </div>
<!-- <!--
<div id="PlazasView"></div> <div id="PlazasView"></div>
<textarea id="Input"></textarea>
<button id="Post">Post</button>
<div id="ChannelView"></div>
<div id="TimelineView"></div>
<xmp id="DataView"></xmp> <xmp id="DataView"></xmp>
--> -->
</div> </div>
<div id="Bottom"> <div id="Bottom">
<a href="javascript:void(0);" onclick="Root.lastChild.remove();">↩️ Back</a> <button onclick="Root.lastChild.remove();">↩️ Back</button>
<button onclick="ComposeNote();">Note</button>
<a href="https://gitlab.com/octtspacc/Friendiiverse">📜️ Source Code</a> <a href="https://gitlab.com/octtspacc/Friendiiverse">📜️ Source Code</a>
</div> </div>
<script>NoscriptView.remove();</script> <script>NoscriptView.remove();</script>

View File

@ -132,7 +132,7 @@ function FetchMastodon(Proc) {
}; };
}; };
function ResFetchMastodon(Res) { function ResFetchMastodon(Res) {
var Notes = TransParsers.Mastodon.Status(Res.responseJson); var Notes = ApiTransform(Res.responseJson, 'Mastodon', 'Note');
LogDebug(Notes, 'l'); LogDebug(Notes, 'l');
Tasker[Res.Proc[0]].Return(Notes); Tasker[Res.Proc[0]].Return(Notes);
}; };
@ -196,15 +196,22 @@ PlazasView.innerHTML = `
</li> </li>
</ul> </ul>
</div> </div>
<div>
<h3>Categories</h3>
<ul>
<li>Testing</li>
<li>#fediverse</li>
</ul>
</div>
`; `;
*/ */
function ComposeNote() {
var Window = MakeWindow();
Window.innerHTML += `
<h2>Compose</h2>
<textarea style="width: 100%; height: 20em;"></textarea>
<p>
<button onclick="PostNote(this.parentNode.parentNode.querySelector('textarea').value);">Note!</button>
</p>
`;
};
function PostNote(Text) {
Obj = ExtrimObj(ApiSchema.Note);
};
DoAsync(FetchFeatured, FillFeatured); DoAsync(FetchFeatured, FillFeatured);
CoverView.remove(); CoverView.remove();

View File

@ -1,3 +1,10 @@
var Strings = { var Strings = {
Back: {
en: "Back",
it: "Indietro",
},
Note: {
en: "Note",
it: "Nota",
},
}; };

View File

@ -16,6 +16,10 @@ img, video {
max-width: 100%; max-width: 100%;
} }
#Bottom > button {
height: 100%;
}
#Root { #Root {
/*margin-bottom: 2em;*/ /*margin-bottom: 2em;*/
} }

View File

@ -28,6 +28,14 @@ function CopyObj(Obj) {
return JSON.parse(JSON.stringify(Obj)); return JSON.parse(JSON.stringify(Obj));
}; };
function ExtrimObj(Obj) {
Obj = CopyObj(Obj);
Object.keys(Obj).forEach(function(Key){
Obj[Key] = undefined;
});
return Obj;
};
function B64Obj(Obj) { function B64Obj(Obj) {
return btoa(JSON.stringify(Obj)); return btoa(JSON.stringify(Obj));
}; };
@ -81,6 +89,7 @@ function JsonTransformCycleA(TreeOld, SchemaCurr, SchemaRoot) {
}); });
return TreeNew; return TreeNew;
}; };
function JsonTransformB(TreesOld, SchemaNew, NodeNew, TypeOld) { function JsonTransformB(TreesOld, SchemaNew, NodeNew, TypeOld) {
if (Array.isArray(TreesOld)) { if (Array.isArray(TreesOld)) {
var ListNew = []; var ListNew = [];
@ -99,10 +108,14 @@ function JsonTransformCycleB(TreeOld, SchemaNew, NodeNew, TypeOld) {
var KeyOld = TreeNew[KeyNew][TypeOld]; var KeyOld = TreeNew[KeyNew][TypeOld];
var ObjOld = TreeOld[KeyOld]; var ObjOld = TreeOld[KeyOld];
if (IsObj(KeyOld)) { if (IsObj(KeyOld)) {
// Deep nested children in TreeOld // Object in SchemaNew / Deep nested children in TreeOld
Object.keys(KeyOld).forEach(function(KeyObj){
if (KeyObj === '__Eval__') {
eval(KeyOld[KeyObj]);
};
});
} else { } else {
// Direct children in TreeOld // Value in SchemaNew / Direct children in TreeOld
if (IsObj(ObjOld)) { if (IsObj(ObjOld)) {
TreeNew[KeyNew] = JsonTransformB(ObjOld, SchemaNew, SchemaNew[KeyNew], TypeOld); TreeNew[KeyNew] = JsonTransformB(ObjOld, SchemaNew, SchemaNew[KeyNew], TypeOld);
} else { } else {
@ -111,5 +124,6 @@ function JsonTransformCycleB(TreeOld, SchemaNew, NodeNew, TypeOld) {
}; };
}; };
}); });
TreeNew.__TreeOld__ = TreeOld;
return TreeNew; return TreeNew;
}; };