Add separate API endpoint for add_channel, apply to web ui.
Previously, the "add channel" box was just calling refresh, which implicitly adds the channel. This adds a separate endpoint for add_channel, and as a bonus the web ui will navigate you to the channel after it has been loaded.
This commit is contained in:
parent
480eeb9ac3
commit
3e27e6e2e8
3 changed files with 28 additions and 16 deletions
|
@ -71,11 +71,9 @@ def get_channel(channel_id=None, download_filter=None):
|
|||
videos=videos,
|
||||
)
|
||||
|
||||
@site.route('/refresh_channel', methods=['POST'])
|
||||
def post_refresh_channel():
|
||||
if 'channel_id' not in request.form:
|
||||
flask.abort(400)
|
||||
channel_id = request.form['channel_id']
|
||||
@site.route('/add_channel', methods=['POST'])
|
||||
def post_add_channel():
|
||||
channel_id = request.form.get('channel_id', '')
|
||||
channel_id = channel_id.strip()
|
||||
if not channel_id:
|
||||
flask.abort(400)
|
||||
|
@ -86,11 +84,20 @@ def post_refresh_channel():
|
|||
except IndexError:
|
||||
flask.abort(404)
|
||||
|
||||
channel = common.ycdldb.add_channel(channel_id, get_videos=True)
|
||||
return jsonify.make_json_response(ycdl.jsonify.channel(channel))
|
||||
|
||||
@site.route('/channel/<channel_id>/refresh', methods=['POST'])
|
||||
def post_refresh_channel(channel_id):
|
||||
force = request.form.get('force', False)
|
||||
force = ycdl.helpers.truthystring(force)
|
||||
channel = common.ycdldb.add_channel(channel_id, commit=False)
|
||||
try:
|
||||
channel = common.ycdldb.get_channel(channel_id)
|
||||
except ycdl.exceptions.NoSuchChannel as exc:
|
||||
return jsonify.make_json_response(ycdl.jsonify.exception(exc), status=404)
|
||||
|
||||
channel.refresh(force=force)
|
||||
return jsonify.make_json_response({})
|
||||
return jsonify.make_json_response(ycdl.jsonify.channel(channel))
|
||||
|
||||
@site.route('/refresh_all_channels', methods=['POST'])
|
||||
def post_refresh_all_channels():
|
||||
|
|
|
@ -483,16 +483,14 @@ function receive_action_response(response)
|
|||
|
||||
function refresh_channel(channel_id, force, callback)
|
||||
{
|
||||
var url = "/refresh_channel";
|
||||
var url = `/channel/${channel_id}/refresh`;
|
||||
data = new FormData();
|
||||
data.append("channel_id", channel_id);
|
||||
data.append("force", force)
|
||||
return common.post(url, data, callback);
|
||||
}
|
||||
|
||||
function set_automark_hook(event)
|
||||
{
|
||||
console.log("What");
|
||||
var url = "/channel/{{channel.id}}/set_automark";
|
||||
data = new FormData();
|
||||
data.append("state", event.target.value);
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<span><button class="refresh_button" onclick="refresh_all_channels(true, function(){location.reload()})">Refresh everything</button></span>
|
||||
<div>
|
||||
<input type="text" id="new_channel_textbox">
|
||||
<button id="new_channel_button" onclick="_new_channel_submit()">Add new channel</button>
|
||||
<button id="new_channel_button" onclick="add_channel_form(event)">Add new channel</button>
|
||||
</div>
|
||||
{% for channel in channels %}
|
||||
{% if channel.has_pending() %}
|
||||
|
@ -75,20 +75,27 @@ var box = document.getElementById('new_channel_textbox');
|
|||
var button = document.getElementById('new_channel_button');
|
||||
common.bind_box_to_button(box, button);
|
||||
|
||||
function _new_channel_submit()
|
||||
function add_channel_form(event)
|
||||
{
|
||||
if (box.value !== "")
|
||||
{
|
||||
refresh_channel(box.value, true, function(){location.reload()});
|
||||
add_channel(box.value, add_channel_callback);
|
||||
}
|
||||
}
|
||||
|
||||
function refresh_channel(channel_id, force, callback)
|
||||
function add_channel_callback(response)
|
||||
{
|
||||
var url = "/refresh_channel";
|
||||
if (response["meta"]["status"] == 200)
|
||||
{
|
||||
window.location.href = "/channel/" + response["data"]["id"];
|
||||
}
|
||||
}
|
||||
|
||||
function add_channel(channel_id, callback)
|
||||
{
|
||||
var url = "/add_channel";
|
||||
data = new FormData();
|
||||
data.append("channel_id", channel_id);
|
||||
data.append("force", force)
|
||||
return common.post(url, data, callback);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue