217 lines
5.5 KiB
JavaScript
217 lines
5.5 KiB
JavaScript
|
import baseRequest from "./baseRequest";
|
|||
|
import Toast from "react-native-toast-message";
|
|||
|
import { generateSignature } from "./crypto";
|
|||
|
|
|||
|
export async function follow(follower, followed) {
|
|||
|
const apiUrl = process.env.EXPO_PUBLIC_API_URL;
|
|||
|
|
|||
|
try {
|
|||
|
const base = await baseRequest();
|
|||
|
const signature = await generateSignature({
|
|||
|
account_relations: [
|
|||
|
{ sub_mid: follower, obj_mid: followed, predicate: 0 },
|
|||
|
{ sub_mid: followed, obj_mid: follower, predicate: 1 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
});
|
|||
|
const response = await fetch(
|
|||
|
`${apiUrl}/api/account_relation/create?signature=${signature}`,
|
|||
|
{
|
|||
|
method: "POST",
|
|||
|
headers: {
|
|||
|
"Content-Type": "application/json",
|
|||
|
},
|
|||
|
body: JSON.stringify({
|
|||
|
account_relations: [
|
|||
|
{ sub_mid: follower, obj_mid: followed, predicate: 0 },
|
|||
|
{ sub_mid: followed, obj_mid: follower, predicate: 1 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
}),
|
|||
|
}
|
|||
|
);
|
|||
|
const data = await response.json();
|
|||
|
if (data.ret === -1) {
|
|||
|
Toast.show({
|
|||
|
type: "error",
|
|||
|
text1: data.msg,
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
} catch (error) {
|
|||
|
console.error(error);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
export async function unfollow(unfollower, unfollowed) {
|
|||
|
const apiUrl = process.env.EXPO_PUBLIC_API_URL;
|
|||
|
|
|||
|
try {
|
|||
|
const base = await baseRequest();
|
|||
|
const signature = await generateSignature({
|
|||
|
sentences: [
|
|||
|
{ sub_mid: unfollower, obj_mid: unfollowed, predicate: 0 },
|
|||
|
{ sub_mid: unfollowed, obj_mid: unfollower, predicate: 1 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
});
|
|||
|
const response = await fetch(
|
|||
|
`${apiUrl}/api/account_relation/delete?signature=${signature}`,
|
|||
|
{
|
|||
|
method: "POST",
|
|||
|
headers: {
|
|||
|
"Content-Type": "application/json",
|
|||
|
},
|
|||
|
body: JSON.stringify({
|
|||
|
sentences: [
|
|||
|
{ sub_mid: unfollower, obj_mid: unfollowed, predicate: 0 },
|
|||
|
{ sub_mid: unfollowed, obj_mid: unfollower, predicate: 1 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
}),
|
|||
|
}
|
|||
|
);
|
|||
|
const data = await response.json();
|
|||
|
if (data.ret === -1) {
|
|||
|
Toast.show({
|
|||
|
type: "error",
|
|||
|
text1: data.msg,
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
} catch (error) {
|
|||
|
console.error(error);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
export async function block(blocker, blocked) {
|
|||
|
const apiUrl = process.env.EXPO_PUBLIC_API_URL;
|
|||
|
|
|||
|
try {
|
|||
|
const base = await baseRequest();
|
|||
|
const signature = await generateSignature({
|
|||
|
account_relations: [
|
|||
|
{ sub_mid: blocker, obj_mid: blocked, predicate: 2 },
|
|||
|
{ sub_mid: blocked, obj_mid: blocker, predicate: 3 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
});
|
|||
|
const response = await fetch(
|
|||
|
`${apiUrl}/api/account_relation/create?signature=${signature}`,
|
|||
|
{
|
|||
|
method: "POST",
|
|||
|
headers: {
|
|||
|
"Content-Type": "application/json",
|
|||
|
},
|
|||
|
body: JSON.stringify({
|
|||
|
account_relations: [
|
|||
|
{ sub_mid: blocker, obj_mid: blocked, predicate: 2 },
|
|||
|
{ sub_mid: blocked, obj_mid: blocker, predicate: 3 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
}),
|
|||
|
}
|
|||
|
);
|
|||
|
const data = await response.json();
|
|||
|
if (data.ret === -1) {
|
|||
|
Toast.show({
|
|||
|
type: "error",
|
|||
|
text1: data.msg,
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
Toast.show({
|
|||
|
type: "success",
|
|||
|
text1: "拉黑成功,将不再向您推荐Ta",
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
} catch (error) {
|
|||
|
console.error(error);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
export async function unblock(unblocker, unblocked) {
|
|||
|
const apiUrl = process.env.EXPO_PUBLIC_API_URL;
|
|||
|
|
|||
|
try {
|
|||
|
const base = await baseRequest();
|
|||
|
const signature = await generateSignature({
|
|||
|
sentences: [
|
|||
|
{ sub_mid: unblocker, obj_mid: unblocked, predicate: 2 },
|
|||
|
{ sub_mid: unblocked, obj_mid: unblocker, predicate: 3 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
});
|
|||
|
const response = await fetch(
|
|||
|
`${apiUrl}/api/account_relation/delete?signature=${signature}`,
|
|||
|
{
|
|||
|
method: "POST",
|
|||
|
headers: {
|
|||
|
"Content-Type": "application/json",
|
|||
|
},
|
|||
|
body: JSON.stringify({
|
|||
|
sentences: [
|
|||
|
{ sub_mid: unblocker, obj_mid: unblocked, predicate: 2 },
|
|||
|
{ sub_mid: unblocked, obj_mid: unblocker, predicate: 3 },
|
|||
|
],
|
|||
|
...base,
|
|||
|
}),
|
|||
|
}
|
|||
|
);
|
|||
|
const data = await response.json();
|
|||
|
if (data.ret === -1) {
|
|||
|
Toast.show({
|
|||
|
type: "error",
|
|||
|
text1: data.msg,
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
} catch (error) {
|
|||
|
console.error(error);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
export async function checkRelation(subMid, objMid, predicate) {
|
|||
|
const apiUrl = process.env.EXPO_PUBLIC_API_URL;
|
|||
|
try {
|
|||
|
const base = await baseRequest();
|
|||
|
const signature = await generateSignature({
|
|||
|
...base,
|
|||
|
sub_mid: subMid,
|
|||
|
obj_mid: objMid,
|
|||
|
predicate: predicate,
|
|||
|
});
|
|||
|
const response = await fetch(
|
|||
|
`${apiUrl}/api/account_relation/list_by_sentence?signature=${signature}`,
|
|||
|
{
|
|||
|
method: "POST",
|
|||
|
headers: {
|
|||
|
"Content-Type": "application/json",
|
|||
|
},
|
|||
|
body: JSON.stringify({
|
|||
|
...base,
|
|||
|
sub_mid: subMid,
|
|||
|
obj_mid: objMid,
|
|||
|
predicate: predicate,
|
|||
|
}),
|
|||
|
}
|
|||
|
);
|
|||
|
const relationData = await response.json();
|
|||
|
if (relationData.ret === -1) {
|
|||
|
Toast.show({
|
|||
|
type: "error",
|
|||
|
text1: relationData.msg,
|
|||
|
topOffset: 60,
|
|||
|
});
|
|||
|
return;
|
|||
|
}
|
|||
|
return relationData.data.is_account_relation_existed;
|
|||
|
} catch (error) {
|
|||
|
console.error(error);
|
|||
|
}
|
|||
|
}
|