2017-12-20 20:01:44 +01:00
|
|
|
export default function(qs: string) {
|
|
|
|
const q = {
|
|
|
|
text: ''
|
|
|
|
};
|
|
|
|
|
|
|
|
qs.split(' ').forEach(x => {
|
|
|
|
if (/^([a-z_]+?):(.+?)$/.test(x)) {
|
|
|
|
const [key, value] = x.split(':');
|
|
|
|
switch (key) {
|
|
|
|
case 'user':
|
2018-03-29 07:48:47 +02:00
|
|
|
q['includeUserUsernames'] = value.split(',');
|
2017-12-22 23:21:52 +01:00
|
|
|
break;
|
|
|
|
case 'exclude_user':
|
2018-03-29 07:48:47 +02:00
|
|
|
q['excludeUserUsernames'] = value.split(',');
|
2017-12-20 20:01:44 +01:00
|
|
|
break;
|
2017-12-20 22:31:56 +01:00
|
|
|
case 'follow':
|
|
|
|
q['following'] = value == 'null' ? null : value == 'true';
|
|
|
|
break;
|
2017-12-20 20:01:44 +01:00
|
|
|
case 'reply':
|
2017-12-20 23:35:16 +01:00
|
|
|
q['reply'] = value == 'null' ? null : value == 'true';
|
|
|
|
break;
|
2018-04-07 19:30:37 +02:00
|
|
|
case 'renote':
|
|
|
|
q['renote'] = value == 'null' ? null : value == 'true';
|
2017-12-20 20:01:44 +01:00
|
|
|
break;
|
|
|
|
case 'media':
|
2017-12-20 23:35:16 +01:00
|
|
|
q['media'] = value == 'null' ? null : value == 'true';
|
2017-12-20 20:01:44 +01:00
|
|
|
break;
|
2017-12-20 23:57:31 +01:00
|
|
|
case 'poll':
|
|
|
|
q['poll'] = value == 'null' ? null : value == 'true';
|
|
|
|
break;
|
2017-12-20 20:01:44 +01:00
|
|
|
case 'until':
|
|
|
|
case 'since':
|
|
|
|
// YYYY-MM-DD
|
|
|
|
if (/^[0-9]+\-[0-9]+\-[0-9]+$/) {
|
|
|
|
const [yyyy, mm, dd] = value.split('-');
|
|
|
|
q[`${key}_date`] = (new Date(parseInt(yyyy, 10), parseInt(mm, 10) - 1, parseInt(dd, 10))).getTime();
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
q[key] = value;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
q.text += x + ' ';
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
if (q.text) {
|
|
|
|
q.text = q.text.trim();
|
|
|
|
}
|
|
|
|
|
|
|
|
return q;
|
|
|
|
}
|