diff --git a/matrix/api.js b/matrix/api.js index dbc39bc..846ea64 100644 --- a/matrix/api.js +++ b/matrix/api.js @@ -91,6 +91,18 @@ async function sendEvent(roomID, type, content, mxid) { return root.event_id } +async function profileSetDisplayname(mxid, displayname) { + await mreq.mreq("PUT", path(`/client/v3/profile/${mxid}/displayname`, mxid), { + displayname + }) +} + +async function profileSetAvatarUrl(mxid, avatar_url) { + await mreq.mreq("PUT", path(`/client/v3/profile/${mxid}/avatar_url`, mxid), { + avatar_url + }) +} + module.exports.path = path module.exports.register = register module.exports.createRoom = createRoom @@ -99,3 +111,5 @@ module.exports.inviteToRoom = inviteToRoom module.exports.getAllState = getAllState module.exports.sendState = sendState module.exports.sendEvent = sendEvent +module.exports.profileSetDisplayname = profileSetDisplayname +module.exports.profileSetAvatarUrl = profileSetAvatarUrl diff --git a/matrix/file.js b/matrix/file.js index 077d527..4578d4a 100644 --- a/matrix/file.js +++ b/matrix/file.js @@ -17,7 +17,14 @@ const inflight = new Map() * @param {string} path */ async function uploadDiscordFileToMxc(path) { - const url = DISCORD_IMAGES_BASE + path + let url + if (path.startsWith("http")) { + // TODO: this is cheating to make seed.js easier. due a refactor or a name change since it's not soley for discord? + // possibly could be good to save non-discord external URLs under a user-specified key rather than simply using the url? + url = path + } else { + url = DISCORD_IMAGES_BASE + path + } // Are we uploading this file RIGHT NOW? Return the same inflight promise with the same resolution let existing = inflight.get(url) diff --git a/seed.js b/seed.js new file mode 100644 index 0000000..d84ca8d --- /dev/null +++ b/seed.js @@ -0,0 +1,35 @@ +// @ts-check + +const assert = require("assert") +const sqlite = require("better-sqlite3") +const HeatSync = require("heatsync") + +const config = require("./config") +const passthrough = require("./passthrough") +const db = new sqlite("db/ooye.db") + +const sync = new HeatSync({watchFS: false}) + +Object.assign(passthrough, { config, sync, db }) + +const api = require("./matrix/api") +const file = require("./matrix/file") +const reg = require("./matrix/read-registration") + +;(async () => { + // ensure registration is correctly set... + + // test connection to homeserver... + + // upload initial images... + const avatarUrl = await file.uploadDiscordFileToMxc("https://cadence.moe/friends/out_of_your_element_rev_2.jpg") + + // set profile data on homeserver... + await api.profileSetDisplayname(`@${reg.sender_localpart}:cadence.moe`, "Out Of Your Element") + await api.profileSetAvatarUrl(`@${reg.sender_localpart}:cadence.moe`, avatarUrl) + + // database ddl... + + // add initial rows to database, like adding the bot to sim... + +})() diff --git a/test/test.js b/test/test.js index bf0023e..2c44bb3 100644 --- a/test/test.js +++ b/test/test.js @@ -7,7 +7,6 @@ const config = require("../config") const passthrough = require("../passthrough") const db = new sqlite("db/ooye.db") -// @ts-ignore const sync = new HeatSync({watchFS: false}) Object.assign(passthrough, { config, sync, db })