Spaces:
Running
Running
var utils = require("../utils"); | |
module.exports = function (http, apis, ctx) { | |
return function changeBio(bio, publish, callback) { | |
var pCallback; | |
var returnPromise = new Promise(function (resolve, reject) { | |
pCallback = error => error ? reject(error) : resolve(); | |
}); | |
if (typeof bio === "function") { | |
callback = bio; | |
bio = ""; | |
} | |
if (typeof bio === "boolean") { | |
publish = bio; | |
bio = ""; | |
} | |
if (typeof publish === "function") { | |
callback = publish; | |
publish = false; | |
} | |
if (typeof publish !== "boolean") | |
publish = false; | |
if (typeof callback !== "function") | |
callback = pCallback; | |
var form = { | |
fb_api_caller_class: "RelayModern", | |
fb_api_req_friendly_name: "ProfileCometSetBioMutation", | |
doc_id: "2725043627607610", | |
variables: JSON.stringify({ | |
input: { | |
bio, | |
publish_bio_feed_story: publish, | |
actor_id: ctx.userID, | |
client_mutation_id: Math.round(Math.random() * 1024).toString() | |
}, | |
hasProfileTileViewID: false, | |
profileTileViewID: null, | |
scale: 1 | |
}) | |
} | |
http | |
.post("https://www.facebook.com/api/graphql/", ctx.jar, form) | |
.then(utils.parseAndCheckLogin(ctx, http)) | |
.then(function (res) { | |
if (res.error || res.errors) | |
throw res; | |
return callback(); | |
}) | |
.catch(function (error) { | |
if (error.type === "logout.") | |
ctx.isLogin = false; | |
return callback(error); | |
}); | |
return returnPromise; | |
} | |
} |