Для того чтобы создать канал нам потребуется токен пользователя, найти его можно в консоли разработчика в вкладке сеть или же получить целенаправленно зная логин и пароль пользователя, метод получения по лог/пас описан тут - https://community.elma365.com/ru/threads/2049/
Для примера соберем страницу.
Добавим в контекст следующие поля:
1. "Название канала" тип строка, имя свойства - channel_name.
2."bool_text" тип Выбор «да/нет», имя свойства - bool_text.
3."Пользователи" тип Пользователи/Несколько, имя свойства - users. (Пользователи которые будут подписаны на канал)
4."Ссылка на канал" тип строка, имя свойства - channel_link.
Вынесем поля на форму.
Также добавим виджет надпись и зададим следующий настройки.
В вкладке системные зададим HTML стили
Код:
text-align: center;
color: rgb(224, 62, 45);
margin-bottom: 10px;
margin-left: 40%;
font-weight: bold;
margin-top: 10px
Далее зададим настройки кнопке.
Перейдем в вкладку сценарии и добавим следующий код.
Код:
declare const console:any;
declare const window:any;
type User_id = {
id:string,
type:string
}
async function create_channel(): Promise<void> {
if(Context.data.channel_name != "" && Context.data.channel_name != undefined){
if(Context.data.channel_name.trim() != ""){
const TOKEN = "eyJhbGciОiJSUzUxMiIsInR5cCI6VCJ1.eyJjb21wYW11IjoiaGVhZCIsInV11XJJZCI1Ijc3MWU0M2NiLTYwMTАtNGNmYy1iZDg1LVkNyIsIm11bmVyIjpmYWxzZSwiaXNQb3J0YWwiOmZhbHNlLCJzZXNzaW9uSWQiOiI0YWRkY1M1Ny00MTVkLTQwMzMtYjk1Mi0zODg0NmZjYTA5ZDkiLCJwcml1aWxlZ2VzIjpbInN5c3RlbSIsImFkbWluaXN0cmF0aW9uIl0sIm5lZWRDaGFuZ2VQYXNzd29yZCI6ZmFsc2UsImNyZWF0ZWRBdCI6MTY4NDA4ODQyOSwiZXhwIjoxNjg2NTExOTE3LCJpYXQiOjE1ODQwOTI1OTcsImlzcyI6ImFwaSJ9.Kpgns4aXgljvIZ0ix6UaHvvmUnYehoiPp6WqrQsI27TgH-6gLS31ZxLuJR5Var111111111111111111111yOUDQrNQGCTDI3h9K6b38sd5QUkYJuPOvitTSvplHnkuoGXg8HzlkZXS1111111111111111111111111111"
const res = await fetch('http://elma.111.ru/api/feed/channels/', {
method: 'GET',
headers: {
Authorization: 'Bearer '+TOKEN
}
});
let res_json = await res.json();
let bool_name = true;
for(let name_channel of res_json){
if(name_channel["name"] == Context.data.channel_name){
bool_name = false;
Context.data.bool_text = true;
}
}
if(bool_name){
const res_cnl = await fetch('http://elma.111.ru/api/feed/channels', {
method: 'PUT',
headers: {
Authorization: 'Bearer '+TOKEN
},
body: JSON.stringify({
name: Context.data.channel_name
})
});
const product_cnl = await res_cnl.json();
let arr_id: User_id [] = [];
for(let user of Context.data.users!){
let new_record = {} as User_id;
let user_app = await user.fetch();
let user_id = user_app.data.__id;
console.log(user_id);
new_record.id = user_id;
new_record.type = "user";
arr_id.push(new_record);
}
let body = JSON.stringify(arr_id);
const res_user = await fetch("http://elma.111.ru/api/feed/channels/"+product_cnl["__id"]+"/members", {
method: 'POST',
headers: {
Authorization: 'Bearer '+TOKEN
},
body: body
});
Context.data.channel_link = "http://elma.111.ru/messages/channels/"+product_cnl["__id"];
}
}else{
window.alert("Не корректное название канала!");
}
}else{
window.alert("Не корректное название канала!");
}
}
Результат.