You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
5.6 KiB
183 lines
5.6 KiB
import {get_json, API_VERSION_PARAM} from './infrastructure/functions'; |
|
import {PKUHELPER_ROOT} from './infrastructure/const'; |
|
import {API_BASE} from './Common'; |
|
import {cache} from './cache'; |
|
|
|
export {PKUHELPER_ROOT, API_VERSION_PARAM}; |
|
|
|
export function token_param(token) { |
|
return API_VERSION_PARAM()+(token ? ('&user_token='+token) : ''); |
|
} |
|
|
|
export {get_json}; |
|
|
|
const SEARCH_PAGESIZE=50; |
|
|
|
export const API={ |
|
load_replies: (pid,token,color_picker,cache_version)=>{ |
|
pid=parseInt(pid); |
|
return fetch( |
|
API_BASE+'/api.php?action=getcomment'+ |
|
'&pid='+pid+ |
|
token_param(token) |
|
) |
|
.then(get_json) |
|
.then((json)=>{ |
|
if(json.code!==0) { |
|
if(json.msg) throw new Error(json.msg); |
|
else throw new Error(JSON.stringify(json)); |
|
} |
|
|
|
cache().delete(pid).then(()=>{ |
|
cache().put(pid,cache_version,json); |
|
}); |
|
|
|
// also change load_replies_with_cache! |
|
json.data=json.data |
|
.sort((a,b)=>{ |
|
return parseInt(a.cid,10)-parseInt(b.cid,10); |
|
}) |
|
.map((info)=>{ |
|
info._display_color=color_picker.get(info.name); |
|
info.variant={}; |
|
return info; |
|
}); |
|
|
|
return json; |
|
}); |
|
}, |
|
|
|
load_replies_with_cache: (pid,token,color_picker,cache_version)=> { |
|
pid=parseInt(pid); |
|
return cache().get(pid,cache_version) |
|
.then((json)=>{ |
|
if(json) { |
|
// also change load_replies! |
|
json.data=json.data |
|
.sort((a,b)=>{ |
|
return parseInt(a.cid,10)-parseInt(b.cid,10); |
|
}) |
|
.map((info)=>{ |
|
info._display_color=color_picker.get(info.name); |
|
info.variant={}; |
|
return info; |
|
}); |
|
|
|
return json; |
|
} |
|
else |
|
return API.load_replies(pid,token,color_picker,cache_version); |
|
}); |
|
}, |
|
|
|
set_attention: (pid,attention,token)=>{ |
|
let data=new URLSearchParams(); |
|
data.append('user_token',token); |
|
data.append('pid',pid); |
|
data.append('switch',attention ? '1' : '0'); |
|
return fetch(API_BASE+'/api.php?action=attention'+token_param(token), { |
|
method: 'POST', |
|
headers: { |
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
}, |
|
body: data, |
|
}) |
|
.then(get_json) |
|
.then((json)=>{ |
|
cache().delete(pid); |
|
if(json.code!==0) { |
|
if(json.msg && json.msg==='已经关注过了') {} |
|
else { |
|
if(json.msg) alert(json.msg); |
|
throw new Error(JSON.stringify(json)); |
|
} |
|
} |
|
return json; |
|
}); |
|
}, |
|
|
|
report: (pid,reason,token)=>{ |
|
let data=new URLSearchParams(); |
|
data.append('user_token',token); |
|
data.append('pid',pid); |
|
data.append('reason',reason); |
|
return fetch(API_BASE+'/api.php?action=report'+token_param(token), { |
|
method: 'POST', |
|
headers: { |
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
}, |
|
body: data, |
|
}) |
|
.then(get_json) |
|
.then((json)=>{ |
|
if(json.code!==0) { |
|
if(json.msg) alert(json.msg); |
|
throw new Error(JSON.stringify(json)); |
|
} |
|
return json; |
|
}); |
|
}, |
|
|
|
get_list: (page,token)=>{ |
|
return fetch( |
|
API_BASE+'/api.php?action=getlist'+ |
|
'&p='+page+ |
|
token_param(token) |
|
) |
|
.then(get_json) |
|
.then((json)=>{ |
|
if(json.code!==0) |
|
throw new Error(JSON.stringify(json)); |
|
return json; |
|
}); |
|
}, |
|
|
|
get_search: (page,keyword,token)=>{ |
|
return fetch( |
|
API_BASE+'/api.php?action=search'+ |
|
'&pagesize='+SEARCH_PAGESIZE+ |
|
'&page='+page+ |
|
'&keywords='+encodeURIComponent(keyword)+ |
|
token_param(token) |
|
) |
|
.then(get_json) |
|
.then((json)=>{ |
|
if(json.code!==0) { |
|
if(json.msg) throw new Error(json.msg); |
|
throw new Error(JSON.stringify(json)); |
|
} |
|
return json; |
|
}); |
|
}, |
|
|
|
get_single: (pid,token)=>{ |
|
return fetch( |
|
API_BASE+'/api.php?action=getone'+ |
|
'&pid='+pid+ |
|
token_param(token) |
|
) |
|
.then(get_json) |
|
.then((json)=>{ |
|
if(json.code!==0) { |
|
if(json.msg) throw new Error(json.msg); |
|
else throw new Error(JSON.stringify(json)); |
|
} |
|
return json; |
|
}); |
|
}, |
|
|
|
get_attention: (token)=>{ |
|
return fetch( |
|
API_BASE+'/api.php?action=getattention'+ |
|
token_param(token) |
|
) |
|
.then(get_json) |
|
.then((json)=>{ |
|
if(json.code!==0) { |
|
if(json.msg) throw new Error(json.msg); |
|
throw new Error(JSON.stringify(json)); |
|
} |
|
return json; |
|
}); |
|
}, |
|
}; |