Add mute action support in user action handler
This commit is contained in:
parent
361b8df798
commit
409c8372ba
|
@ -27,6 +27,14 @@ export function userActionHandler(event: Event): void {
|
||||||
targetURL = '/ajax/destroy_relationship';
|
targetURL = '/ajax/destroy_relationship';
|
||||||
relationshipType = 'block';
|
relationshipType = 'block';
|
||||||
break;
|
break;
|
||||||
|
case 'mute':
|
||||||
|
targetURL = '/ajax/create_relationship';
|
||||||
|
relationshipType = 'mute';
|
||||||
|
break;
|
||||||
|
case 'unmute':
|
||||||
|
targetURL = '/ajax/destroy_relationship';
|
||||||
|
relationshipType = 'mute';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
let success = false;
|
let success = false;
|
||||||
|
|
||||||
|
@ -77,6 +85,22 @@ export function userActionHandler(event: Event): void {
|
||||||
button.classList.add('btn-primary');
|
button.classList.add('btn-primary');
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'mute':
|
||||||
|
button.dataset.action = 'unmute';
|
||||||
|
button.querySelector('span').innerText = I18n.translate('voc.unmute');
|
||||||
|
if (button.classList.contains('btn')) {
|
||||||
|
button.classList.remove('btn-primary');
|
||||||
|
button.classList.add('btn-default');
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'unmute':
|
||||||
|
button.dataset.action = 'mute';
|
||||||
|
button.querySelector('span').innerText = I18n.translate('voc.mute');
|
||||||
|
if (button.classList.contains('btn')) {
|
||||||
|
button.classList.remove('btn-default');
|
||||||
|
button.classList.add('btn-primary');
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -86,4 +110,4 @@ function resetFollowButton(button: HTMLButtonElement) {
|
||||||
button.innerText = I18n.translate('voc.follow');
|
button.innerText = I18n.translate('voc.follow');
|
||||||
button.classList.remove('btn-default');
|
button.classList.remove('btn-default');
|
||||||
button.classList.add('btn-primary');
|
button.classList.add('btn-primary');
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ export default (): void => {
|
||||||
registerEvents([
|
registerEvents([
|
||||||
{ type: 'click', target: 'button[name=user-action]', handler: userActionHandler, global: true },
|
{ type: 'click', target: 'button[name=user-action]', handler: userActionHandler, global: true },
|
||||||
{ type: 'click', target: '[data-action=block], [data-action=unblock]', handler: userActionHandler, global: true },
|
{ type: 'click', target: '[data-action=block], [data-action=unblock]', handler: userActionHandler, global: true },
|
||||||
|
{ type: 'click', target: '[data-action=mute], [data-action=unmute]', handler: userActionHandler, global: true },
|
||||||
{ type: 'click', target: 'a[data-action=report-user]', handler: userReportHandler, global: true }
|
{ type: 'click', target: 'a[data-action=report-user]', handler: userReportHandler, global: true }
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,14 @@
|
||||||
%a.dropdown-item{ href: '#', data: { action: :block, target: user.screen_name } }
|
%a.dropdown-item{ href: '#', data: { action: :block, target: user.screen_name } }
|
||||||
%i.fa.fa-minus-circle
|
%i.fa.fa-minus-circle
|
||||||
%span.pe-none= t("voc.block")
|
%span.pe-none= t("voc.block")
|
||||||
|
- if current_user.muting?(user)
|
||||||
|
%a.dropdown-item{ href: '#', data: { action: :unmute, target: user.screen_name } }
|
||||||
|
%i.fa.fa-volume-off
|
||||||
|
%span.pe-none= t("voc.unmute")
|
||||||
|
- else
|
||||||
|
%a.dropdown-item{ href: '#', data: { action: :mute, target: user.screen_name } }
|
||||||
|
%i.fa.fa-volume-off
|
||||||
|
%span.pe-none= t("voc.mute")
|
||||||
%a.dropdown-item{ href: '#', data: { action: 'report-user', target: user.screen_name } }
|
%a.dropdown-item{ href: '#', data: { action: 'report-user', target: user.screen_name } }
|
||||||
%i.fa.fa-exclamation-triangle
|
%i.fa.fa-exclamation-triangle
|
||||||
= t("voc.report")
|
= t("voc.report")
|
||||||
|
|
|
@ -107,6 +107,9 @@ en:
|
||||||
follow:
|
follow:
|
||||||
success: "Successfully followed user."
|
success: "Successfully followed user."
|
||||||
error: "You are already following that user."
|
error: "You are already following that user."
|
||||||
|
mute:
|
||||||
|
success: "Successfully muted user."
|
||||||
|
error: "You are already muting that user."
|
||||||
destroy:
|
destroy:
|
||||||
block:
|
block:
|
||||||
success: "Successfully unblocked user."
|
success: "Successfully unblocked user."
|
||||||
|
@ -114,6 +117,9 @@ en:
|
||||||
follow:
|
follow:
|
||||||
success: "Successfully unfollowed user."
|
success: "Successfully unfollowed user."
|
||||||
error: "You are not following that user."
|
error: "You are not following that user."
|
||||||
|
mute:
|
||||||
|
success: "Successfully unmuted user."
|
||||||
|
error: "You are not muting that user."
|
||||||
report:
|
report:
|
||||||
create:
|
create:
|
||||||
noauth: :ajax.noauth
|
noauth: :ajax.noauth
|
||||||
|
|
|
@ -13,6 +13,7 @@ en:
|
||||||
load: "Load more"
|
load: "Load more"
|
||||||
login: "Sign in"
|
login: "Sign in"
|
||||||
logout: "Sign out"
|
logout: "Sign out"
|
||||||
|
mute: "Mute"
|
||||||
save: "Save changes"
|
save: "Save changes"
|
||||||
show_anonymous_questions: "Show all questions from this user"
|
show_anonymous_questions: "Show all questions from this user"
|
||||||
subscribe: "Subscribe"
|
subscribe: "Subscribe"
|
||||||
|
@ -23,6 +24,7 @@ en:
|
||||||
terms: "Terms of Service"
|
terms: "Terms of Service"
|
||||||
unblock: "Unblock"
|
unblock: "Unblock"
|
||||||
unfollow: "Unfollow"
|
unfollow: "Unfollow"
|
||||||
|
unmute: "Unmute"
|
||||||
update: "Update"
|
update: "Update"
|
||||||
view_in_rails_admin: "View in Rails Admin"
|
view_in_rails_admin: "View in Rails Admin"
|
||||||
"y": "Yes"
|
"y": "Yes"
|
||||||
|
|
|
@ -5,5 +5,5 @@ require "dry-types"
|
||||||
module Types
|
module Types
|
||||||
include Dry.Types()
|
include Dry.Types()
|
||||||
|
|
||||||
RelationshipTypes = Types::String.enum("follow", "block")
|
RelationshipTypes = Types::String.enum("follow", "block", "mute")
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue