Merge pull request #2729 from NAmorim/develop

Contribution: Update user creation
This commit is contained in:
Luis Fernando Molina authored and GitHub committed 2021-11-25 04:10:52 -04:00
commit e292f6b2e2
4 files changed
+140 -6

No files matched your search

+44
View File
@@ -4,6 +4,7 @@ exports.newGithubServer = function newGithubServer() {
getGithubStars: getGithubStars,
getGithubWatchers: getGithubWatchers,
getGithubForks: getGithubForks,
createGithubFork: createGithubFork,
mergePullRequests: mergePullRequests,
initialize: initialize,
finalize: finalize,
@@ -162,6 +163,49 @@ exports.newGithubServer = function newGithubServer() {
}
}
async function createGithubFork(repository, username, token) {
try {
username = unescape(username)
token = unescape(token)
await doGithub()
async function doGithub() {
try {
//const repo = 'Superalgos'
//const owner = username
const { Octokit } = SA.nodeModules.octokit
const octokit = new Octokit({
auth: token,
userAgent: 'Superalgos ' + SA.version
})
await octokit.repos.createFork({
owner: 'Superalgos',
repo: 'Superalgos'
})
} catch (err) {
if (err === undefined) { return }
console.log('[ERROR] Github Server -> createGithubFork -> doGithub -> err.stack = ' + err.stack)
}
}
} catch (err) {
console.log('[ERROR] Github Server -> createGithubFork -> Method call produced an error.')
console.log('[ERROR] Github Server -> createGithubFork -> err.stack = ' + err.stack)
console.log('[ERROR] Github Server -> createGithubFork -> repository = ' + repository)
console.log('[ERROR] Github Server -> createGithubFork -> username = ' + username)
console.log('[ERROR] Github Server -> createGithubFork -> token starts with = ' + token.substring(0, 10) + '...')
console.log('[ERROR] Github Server -> createGithubFork -> token ends with = ' + '...' + token.substring(token.length - 10))
let error = {
result: 'Fail Because',
message: err.message,
stack: err.stack
}
return error
}
}
async function mergeGithubPullRequests(commitMessage, username, token) {
try {
commitMessage = unescape(commitMessage)
+16 -5
View File
@@ -1161,7 +1161,7 @@ exports.newHttpInterface = function newHttpInterface() {
try {
console.log('fixSchemas...' + allAppSchemas.length)
let projects = SA.projects.foundations.utilities.filesAndDirectories.getDirectories(global.env.PATH_TO_PROJECTS)
const fs = SA.nodeModules.fs
//const fs = SA.nodeModules.fs
let needFixing = 0
for (let i = 0; i < allAppSchemas.length; i++) {
let schemaDocument = allAppSchemas[i]
@@ -1209,13 +1209,13 @@ exports.newHttpInterface = function newHttpInterface() {
}
}
if (wasUpdated === true) {
let fileContent = JSON.stringify(schemaDocument, undefined, 4)
let filePath = allAppSchemasFilePaths[i]
//if (wasUpdated === true) {
//let fileContent = JSON.stringify(schemaDocument, undefined, 4)
//let filePath = allAppSchemasFilePaths[i]
//console.log('Saving File at ' + filePath)
//console.log(fileContent)
//fs.writeFileSync(filePath, fileContent)
}
//}
}
} catch (err) {
console.log(err.stack)
@@ -1312,6 +1312,17 @@ exports.newHttpInterface = function newHttpInterface() {
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
return
}
case 'createGithubFork': {
let serverResponse = await PL.servers.GITHUB_SERVER.createGithubFork(
params.repository,
params.username,
params.token
)
SA.projects.foundations.utilities.httpResponses.respondWithContent(JSON.stringify(serverResponse), httpResponse)
return
}
case 'mergePullRequests': {
let serverResponse = await PL.servers.GITHUB_SERVER.mergePullRequests(
@@ -108,7 +108,7 @@ function newGovernanceFunctionLibraryLiquidityProgram() {
) {
node.payload.liquidityProgram.isActive = false
userProfile.payload.uiObject.setErrorMessage(
"Waiting for liquidity balance. It takes 1 minute to load the liquidity provided by each profile, bacause you are using a free API provided by BSC Scan.",
"Waiting for liquidity balance. It takes 1 minute to load the liquidity provided by each profile, because you are using a free API provided by BSC Scan.",
UI.projects.governance.globals.designer.SET_ERROR_COUNTER_FACTOR
)
return
@@ -125,6 +125,80 @@ function newGovernanceFunctionLibraryProfileConstructor() {
UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes
)
/*
Set up a basic profile to start receiving benefits
*/
let finServices = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(userProfile.tokenPowerSwitch, "Financial Programs", userProfile)
finServices.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
finServices.payload.uiObject.menu.internalClick("Add Financial Program")
let stakeProg = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(finServices, "Staking Program", userProfile)
stakeProg.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
stakeProg.payload.uiObject.menu.internalClick("Add Tokens Awarded")
let liquidProgs = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(userProfile.tokenPowerSwitch, "Liquidity Programs", userProfile)
liquidProgs.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
liquidProgs.payload.uiObject.menu.internalClick('Add Liquidity Program')
let liquidProg = UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(liquidProgs, "Liquidity Program", userProfile)
liquidProg.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
liquidProg.payload.uiObject.menu.internalClick('Add Tokens Awarded')
/*
Check if the user already has the SA fork. If not, do it for them.
*/
const hasFork = UI.projects.governance.spaces.userProfileSpace.githubForks.get(githubUsername)
if(hasFork === undefined) {
// New user! Probably doesn't have a fork, so let's create it.
let apisNode = UI.projects.foundations.spaces.designSpace.workspace.getHierarchyHeadByNodeType('APIs')
if (apisNode === undefined) {
UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing')
return
}
if (apisNode.githubAPI === undefined) {
UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing')
return
}
let config = JSON.parse(apisNode.githubAPI.config)
if (config.username === undefined || config.username === "") {
UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing')
return
}
if (config.token === undefined || config.token === "") {
UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Error - Github Credentials Missing', 'Anchor Github Credentials Missing')
return
}
let params = {
method: 'createGithubFork',
username: config.username,
token: config.token,
}
let url = 'GOV' // We will access the default Client GOV endpoint.
httpRequest(JSON.stringify(params), url, onResponse)
function onResponse(err, data) {
data = JSON.parse(data)
if (err.result === GLOBAL.DEFAULT_OK_RESPONSE.result && data.result === GLOBAL.DEFAULT_OK_RESPONSE.result) {
UI.projects.education.spaces.docsSpace.navigateTo('Governance', 'Topic', 'Gov Message - Automated User Profile Contribute Done')
} else {
if (data.docs === undefined) {return}
UI.projects.education.spaces.docsSpace.navigateTo(
data.docs.project,
data.docs.category,
data.docs.type,
data.docs.anchor,
undefined,
data.docs.placeholder
)
}
}
}
/*
We store at the User Profile the Signed githubUsername
*/
UI.projects.visualScripting.utilities.nodeConfig.saveConfigProperty(userProfile.payload, 'signature', response.signature)
@@ -143,10 +217,15 @@ function newGovernanceFunctionLibraryProfileConstructor() {
Delete the mnemonic from the Profile Constructor config.
*/
node.config = "{}"
/*
TODO: Let's create a nice basic profile to start with liquidity and community
*/
/*
Show nice message.
*/
if (mnemonic === undefined || mnemonic === "") {
// TODO link to some wallet and setup the token
node.payload.uiObject.setInfoMessage(
"Profile Private Key has been successfully created. User Profile installed as a plugin and saved. Use the Private Key at a crypto wallet and delete this node once done.",
UI.projects.governance.globals.designer.SET_INFO_COUNTER_FACTOR