mirror of
https://github.com/beestat/app.git
synced 2025-06-03 13:46:54 -04:00
Fixed #367 - Cannot unlink Patreon account after linking
This commit is contained in:
parent
8d828030cf
commit
3130905852
@ -42,17 +42,25 @@ class patreon_token extends cora\crud {
|
|||||||
|
|
||||||
$new_patreon_token = [
|
$new_patreon_token = [
|
||||||
'access_token' => $response['access_token'],
|
'access_token' => $response['access_token'],
|
||||||
'refresh_token' => $response['refresh_token']
|
'refresh_token' => $response['refresh_token'],
|
||||||
|
'deleted' => false
|
||||||
];
|
];
|
||||||
|
|
||||||
$existing_patreon_tokens = $this->read();
|
/**
|
||||||
if(count($existing_patreon_tokens) > 0) {
|
* Look for existing tokens (in case access was revoked and then
|
||||||
$new_patreon_token['patreon_token_id'] = $existing_patreon_tokens[0]['patreon_token_id'];
|
* re-granted). Include deleted tokens and revive that row since each user
|
||||||
$this->update(
|
* is limited to one token row.
|
||||||
|
*/
|
||||||
|
$existing_patreon_token = $this->read([
|
||||||
|
'deleted' => [0, 1]
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (count($existing_patreon_token) > 0) {
|
||||||
|
$this->update(array_merge(
|
||||||
|
['patreon_token_id' => $existing_patreon_token[0]['patreon_token_id']],
|
||||||
$new_patreon_token
|
$new_patreon_token
|
||||||
);
|
));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$this->create($new_patreon_token);
|
$this->create($new_patreon_token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
26
api/user.php
26
api/user.php
@ -13,7 +13,8 @@ class user extends cora\crud {
|
|||||||
'read_id',
|
'read_id',
|
||||||
'update_setting',
|
'update_setting',
|
||||||
'log_out',
|
'log_out',
|
||||||
'sync_patreon_status'
|
'sync_patreon_status',
|
||||||
|
'unlink_patreon_account',
|
||||||
],
|
],
|
||||||
'public' => []
|
'public' => []
|
||||||
];
|
];
|
||||||
@ -345,4 +346,27 @@ class user extends cora\crud {
|
|||||||
$this->database->release_lock($lock_name);
|
$this->database->release_lock($lock_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unlink the Patreon account for the current user.
|
||||||
|
*/
|
||||||
|
public function unlink_patreon_account() {
|
||||||
|
$patreon_tokens = $this->api('patreon_token', 'read_id');
|
||||||
|
foreach($patreon_tokens as $patreon_token) {
|
||||||
|
$this->api(
|
||||||
|
'patreon_token',
|
||||||
|
'delete',
|
||||||
|
[
|
||||||
|
'id' => $patreon_token['patreon_token_id']
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->update(
|
||||||
|
[
|
||||||
|
'user_id' => $this->session->get_user_id(),
|
||||||
|
'patreon_status' => null
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -480,6 +480,7 @@ input[type=range]::-moz-range-thumb {
|
|||||||
.icon.label:before { content: "\F0315"; }
|
.icon.label:before { content: "\F0315"; }
|
||||||
.icon.layers:before { content: "\F0328"; }
|
.icon.layers:before { content: "\F0328"; }
|
||||||
.icon.layers_plus:before { content: "\F0E4D"; }
|
.icon.layers_plus:before { content: "\F0E4D"; }
|
||||||
|
.icon.link_off:before { content: "\F0338"; }
|
||||||
.icon.magnify_close:before { content: "\F0980"; }
|
.icon.magnify_close:before { content: "\F0980"; }
|
||||||
.icon.magnify_minus_outline:before { content: "\F06EC"; }
|
.icon.magnify_minus_outline:before { content: "\F06EC"; }
|
||||||
.icon.magnify_plus_outline:before { content: "\F06ED"; }
|
.icon.magnify_plus_outline:before { content: "\F06ED"; }
|
||||||
|
@ -199,7 +199,34 @@ beestat.component.modal.patreon_status.prototype.get_title_ = function() {
|
|||||||
*/
|
*/
|
||||||
beestat.component.modal.patreon_status.prototype.get_buttons_ = function() {
|
beestat.component.modal.patreon_status.prototype.get_buttons_ = function() {
|
||||||
if (beestat.user.patreon_is_connected() === true) {
|
if (beestat.user.patreon_is_connected() === true) {
|
||||||
var refresh = new beestat.component.tile()
|
const unlink = new beestat.component.tile()
|
||||||
|
.set_text('Unlink')
|
||||||
|
.set_icon('link_off')
|
||||||
|
.set_shadow(false)
|
||||||
|
.set_background_color('#fff')
|
||||||
|
.set_text_color(beestat.style.color.gray.base)
|
||||||
|
.set_text_hover_color(beestat.style.color.red.base)
|
||||||
|
.addEventListener('click', function() {
|
||||||
|
this
|
||||||
|
.removeEventListener('click');
|
||||||
|
|
||||||
|
new beestat.api()
|
||||||
|
.add_call(
|
||||||
|
'user',
|
||||||
|
'unlink_patreon_account',
|
||||||
|
{},
|
||||||
|
'unlink_patreon_account'
|
||||||
|
)
|
||||||
|
.add_call('user', 'read_id', {}, 'user')
|
||||||
|
.set_callback(function(response) {
|
||||||
|
// Update the cache.
|
||||||
|
self.dispose();
|
||||||
|
beestat.cache.set('user', response.user);
|
||||||
|
})
|
||||||
|
.send();
|
||||||
|
});
|
||||||
|
|
||||||
|
const refresh = new beestat.component.tile()
|
||||||
.set_text('Refresh Status')
|
.set_text('Refresh Status')
|
||||||
.set_icon('refresh')
|
.set_icon('refresh')
|
||||||
.set_background_color(beestat.style.color.green.base)
|
.set_background_color(beestat.style.color.green.base)
|
||||||
@ -226,7 +253,10 @@ beestat.component.modal.patreon_status.prototype.get_buttons_ = function() {
|
|||||||
.send();
|
.send();
|
||||||
});
|
});
|
||||||
|
|
||||||
return [refresh];
|
return [
|
||||||
|
unlink,
|
||||||
|
refresh
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user