ComunicWeb/assets/js/components/posts/interface.js

299 lines
6.8 KiB
JavaScript
Raw Permalink Normal View History

2017-12-31 17:51:46 +00:00
/**
* Posts communication interface with the API
*
* @author Pierre HUBERT
*/
2020-04-01 16:45:29 +00:00
const PostsInterface = {
2017-12-31 17:51:46 +00:00
/**
* Get user posts
*
* @param {int} userID The ID of the target user
* @param {int} lastPostID The ID of the last post loaded
2017-12-31 17:51:46 +00:00
* @param {function} callback Callback function
*/
get_user: function(userID, lastPostID, callback){
//Load the previous posts to the loaded post if required
if(lastPostID > 0)
2018-02-03 17:21:26 +00:00
lastPostID--;
2017-12-31 17:51:46 +00:00
//Prepare the API request
var APIuri = "posts/get_user";
var params = {
userID: userID,
startFrom: lastPostID
2017-12-31 17:51:46 +00:00
};
//Make the request
ComunicWeb.common.api.makeAPIrequest(APIuri, params, true, callback);
2018-01-16 05:50:16 +00:00
},
2018-07-17 07:23:44 +00:00
/**
* Get a group posts
*
* @param {number} groupID The ID of the target group
* @param {int} lastPostID The ID of the last post loaded
* @param {function} callback
*/
get_group: function(groupID, lastPostID, callback){
//Load the previous posts to the loaded post if required
if(lastPostID > 0)
lastPostID--;
//Prepare the API request
var APIuri = "posts/get_group";
var params = {
groupID: groupID,
startFrom: lastPostID
};
//Make the request
ComunicWeb.common.api.makeAPIrequest(APIuri, params, true, callback);
},
2018-02-02 05:56:52 +00:00
/**
* Get the list of the latest posts
*
2018-02-03 17:21:26 +00:00
* @param {number} lastPostID The ID of the loast loaded post (or 0)
* @param {boolean} include_groups Specify whether groups posts should be
* included or not
2018-02-02 05:56:52 +00:00
* @param {function} callback What to do when we got response
*/
get_latest: function(lastPostID, include_groups, callback){
2018-02-03 17:21:26 +00:00
if(lastPostID > 0)
lastPostID--;
2018-02-02 05:56:52 +00:00
//Prepare API request
var APIuri = "posts/get_latest";
2018-02-03 17:21:26 +00:00
var params = {
startFrom: lastPostID,
include_groups: include_groups
2018-02-03 17:21:26 +00:00
};
2018-02-02 05:56:52 +00:00
//Perform the request
ComunicWeb.common.api.makeAPIrequest(APIuri, params, true, callback);
},
2018-01-16 05:50:16 +00:00
/**
* Get single post informations
*
* @param {int} postID The ID of the post to get
* @param {function} callback What to do once we got post informations
*/
get_single: function(postID, callback){
//Prepare API request
var APIuri = "posts/get_single";
var params = {
postID: postID
};
//Make the request
ComunicWeb.common.api.makeAPIrequest(APIuri, params, true, callback);
2017-12-31 17:51:46 +00:00
},
/**
* Send a new post
*
* @param {string} kind The kind of page
* @param {string} id The ID of the kind of page
* @param {FormData} data The data of the new post
* @param {function} callback The function to call once the post is posted
*/
send_post: function(kind, id, data, callback){
//Prepare the request
var apiURI = "posts/create";
//Append the kind of post to the request
data.append("kind-page", kind);
data.append("kind-id", id);
//Perform the request
ComunicWeb.common.api.makeFormDatarequest(apiURI, data, true, callback);
},
2019-05-19 15:16:18 +00:00
/**
* Get the list of available targets where user can create posts
*/
getAvailableTargets: function(){
return api("posts/getAvailableTargets", null, true);
},
2018-01-10 18:16:28 +00:00
/**
* Change post visibility level
*
* @param {int} postID The ID of the post
* @param {string} new_level New visibility level for the post
* @param {function} callback What to do once we got a response
*/
set_visibility_level: function(postID, new_level, callback){
//Prepare the API request
var APIuri = "posts/set_visibility_level";
var params = {
postID: postID,
new_level: new_level
};
//Make the request
ComunicWeb.common.api.makeAPIrequest(APIuri, params, true, callback);
},
/**
* Delete a post
*
* @param {int} postID The ID of the post to delete
* @param {function} callback What to do once we got a reponse
*/
delete: function(postID, callback){
//Prepare an API request
apiURI = "posts/delete";
params = {
postID: postID
};
//Perform the request
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Update a message content
*
* @param {int} postID The ID of the post to update
* @param {string} content The new content of the post
* @param {function} callback What to do once post has been updated
*/
update_content: function(postID, content, callback){
//Prepare an API request
apiURI = "posts/update_content";
params = {
postID: postID,
new_content: content
};
//Perform the request
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
2018-01-17 05:48:03 +00:00
/**
* Send a response to a survey
*
* @param {int} postID The ID of the target post
2018-01-17 05:55:26 +00:00
* @param {int} choiceID The ID of the selected choice
2018-01-17 05:48:03 +00:00
* @param {function} callback This function is called when we got a response
*/
2018-01-17 05:55:26 +00:00
survey_send_response: function(postID, choiceID, callback){
2018-01-17 05:48:03 +00:00
//Prepare an API request
apiURI = "surveys/send_response";
params = {
postID: postID,
2018-01-17 05:55:26 +00:00
choiceID: choiceID
2018-01-17 05:48:03 +00:00
};
//Perform the request
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
},
/**
* Cancel a response to a survey
*
* @param {int} postID The ID of the target post
* @param {function} callback This function is called once we got a response
*/
cancel_survey_response: function(postID, callback){
//Prepare an API request
apiURI = "surveys/cancel_response";
params = {
postID: postID
};
//Perform the request
ComunicWeb.common.api.makeAPIrequest(apiURI, params, true, callback);
2020-04-01 16:45:29 +00:00
},
2020-05-17 17:22:04 +00:00
/**
* Create a new choice for this survey
*
* @param {number} postID The ID of the associated post
* @param {String} choice The value of the choice
*/
createSurveyChoice: async function(postID, choice) {
2020-05-18 11:18:58 +00:00
await api("surveys/create_new_choice", {
2020-05-17 17:22:04 +00:00
postID: postID,
choice: choice
}, true);
},
2020-05-17 16:43:41 +00:00
/**
* Prevent new choices from being created
*
* @param {number} postID The ID of the target post
*/
blockNewSurveyChoices: async function(postID) {
2020-05-18 11:18:58 +00:00
await api("surveys/block_new_choices_creation", {
2020-05-17 16:43:41 +00:00
postID: postID
}, true);
},
2020-04-01 16:45:29 +00:00
_registerCount: {},
/**
* Register for post updates
*
* @param {Number} postID Target post ID
*/
register: async function(postID) {
if(!this._registerCount.hasOwnProperty(postID)) {
await ws("$main/register_post", {postID: postID});
this._registerCount[postID] = 1;
}
else
this._registerCount[postID]++;
},
/**
* Unregister of post updates
*
* @param {Number} postID Target post ID
*/
unregister: async function(postID) {
// Auto unregister all remaining registered posts if websocket is closed
if(!UserWebSocket.IsConnected)
this._registerCount = {}
if(!this._registerCount.hasOwnProperty(postID))
return;
this._registerCount[postID]--;
if(this._registerCount[postID] == 0) {
await ws("$main/unregister_post", {postID: postID});
delete this._registerCount[postID];
}
},
}
ComunicWeb.components.posts.interface = PostsInterface;
2020-04-01 16:45:29 +00:00
document.addEventListener("wsClosed", () => {
PostsInterface._registerCount = {}
});