[frontend] Add visibility dropdown to compose menu, render reply to support to compose
This commit is contained in:
parent
74355e8332
commit
727a4dfe88
7 changed files with 46 additions and 4 deletions
|
@ -1,8 +1,11 @@
|
||||||
|
@using FParsec
|
||||||
@using Iceshrimp.Assets.PhosphorIcons
|
@using Iceshrimp.Assets.PhosphorIcons
|
||||||
@using Iceshrimp.Frontend.Core.Services
|
@using Iceshrimp.Frontend.Core.Services
|
||||||
@using Iceshrimp.Shared.Schemas
|
@using Iceshrimp.Shared.Schemas
|
||||||
|
@using Iceshrimp.Frontend.Components.Note
|
||||||
@inject IJSRuntime Js
|
@inject IJSRuntime Js
|
||||||
@inject ApiService ApiService
|
@inject ApiService ApiService
|
||||||
|
@inject ComposeService ComposeService
|
||||||
<dialog class="compose" @ref="Dialog">
|
<dialog class="compose" @ref="Dialog">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<button @onclick="CloseDialog">
|
<button @onclick="CloseDialog">
|
||||||
|
@ -12,6 +15,12 @@
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
<button @onclick="SendNote" class="post-btn">Post<Icon Name="Icons.PaperPlaneRight"/></button>
|
<button @onclick="SendNote" class="post-btn">Post<Icon Name="Icons.PaperPlaneRight"/></button>
|
||||||
</div>
|
</div>
|
||||||
|
@if (ReplyTo != null)
|
||||||
|
{
|
||||||
|
<div class="reply-to">
|
||||||
|
<NoteComponent Note="ReplyTo" AsQuote="true" />
|
||||||
|
</div>
|
||||||
|
}
|
||||||
@if (NoteDraft.Cw != null)
|
@if (NoteDraft.Cw != null)
|
||||||
{
|
{
|
||||||
<input @bind="NoteDraft.Cw" class="input cw-field" placeholder="Content Warning"/>
|
<input @bind="NoteDraft.Cw" class="input cw-field" placeholder="Content Warning"/>
|
||||||
|
@ -36,6 +45,7 @@
|
||||||
private IJSObjectReference? _module;
|
private IJSObjectReference? _module;
|
||||||
private IList<DriveFileResponse> Attachments { get; set; } = [];
|
private IList<DriveFileResponse> Attachments { get; set; } = [];
|
||||||
private InputFile UploadInput { get; set; }
|
private InputFile UploadInput { get; set; }
|
||||||
|
private NoteBase? ReplyTo { get; set; }
|
||||||
|
|
||||||
private NoteCreateRequest NoteDraft { get; set; } = new NoteCreateRequest
|
private NoteCreateRequest NoteDraft { get; set; } = new NoteCreateRequest
|
||||||
{
|
{
|
||||||
|
@ -83,8 +93,15 @@
|
||||||
await _module.InvokeVoidAsync("openUpload", UploadInput.Element);
|
await _module.InvokeVoidAsync("openUpload", UploadInput.Element);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task OpenDialog()
|
public async Task OpenDialog(NoteBase? replyTo = null)
|
||||||
{
|
{
|
||||||
|
if (replyTo != null)
|
||||||
|
{
|
||||||
|
ReplyTo = replyTo;
|
||||||
|
NoteDraft.ReplyId = replyTo.Id;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
await _module.InvokeVoidAsync("openDialog", Dialog);
|
await _module.InvokeVoidAsync("openDialog", Dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,6 +141,7 @@
|
||||||
{
|
{
|
||||||
_module = await Js.InvokeAsync<IJSObjectReference>("import",
|
_module = await Js.InvokeAsync<IJSObjectReference>("import",
|
||||||
"./Components/Compose.razor.js");
|
"./Components/Compose.razor.js");
|
||||||
|
ComposeService.ComposeDialog = this;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,3 +48,8 @@
|
||||||
.file-input {
|
.file-input {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.reply-to {
|
||||||
|
border: solid var(--highlight-color) 0.1rem;
|
||||||
|
border-radius: 0.75rem;
|
||||||
|
padding: 0.5rem;
|
||||||
|
}
|
|
@ -8,3 +8,7 @@
|
||||||
border-width: 0.1rem;
|
border-width: 0.1rem;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown-root {
|
||||||
|
display: inline-block
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
@using Iceshrimp.Shared.Schemas
|
@using Iceshrimp.Shared.Schemas
|
||||||
@inject ApiService ApiService;
|
@inject ApiService ApiService;
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
|
@inject ComposeService ComposeService
|
||||||
<CascadingValue Value="this">
|
<CascadingValue Value="this">
|
||||||
<div class="note-header">
|
<div class="note-header">
|
||||||
<NoteUserInfo
|
<NoteUserInfo
|
||||||
|
@ -84,4 +85,9 @@
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Reply()
|
||||||
|
{
|
||||||
|
ComposeService.ComposeDialog?.OpenDialog(Note);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<button class="btn" @onclick:stopPropagation="true">
|
<button class="btn" @onclick="Reply" @onclick:stopPropagation="true">
|
||||||
<Icon Name="Icons.ArrowUUpLeft" Size="1.3em"/>
|
<Icon Name="Icons.ArrowUUpLeft" Size="1.3em"/>
|
||||||
</button>
|
</button>
|
||||||
<button class="btn" @onclick:stopPropagation="true">
|
<button class="btn" @onclick:stopPropagation="true">
|
||||||
|
@ -46,4 +46,9 @@
|
||||||
{
|
{
|
||||||
NoteComponent.Like();
|
NoteComponent.Like();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Reply()
|
||||||
|
{
|
||||||
|
NoteComponent.Reply();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,9 @@
|
||||||
|
using Iceshrimp.Frontend.Components;
|
||||||
|
using Microsoft.AspNetCore.Components;
|
||||||
|
|
||||||
namespace Iceshrimp.Frontend.Core.Services;
|
namespace Iceshrimp.Frontend.Core.Services;
|
||||||
|
|
||||||
public class ComposeService
|
public class ComposeService
|
||||||
{
|
{
|
||||||
|
public Compose? ComposeDialog { get; set; }
|
||||||
}
|
}
|
|
@ -17,6 +17,7 @@ builder.Services.AddIntersectionObserver();
|
||||||
builder.Services.AddSingleton<SessionService>();
|
builder.Services.AddSingleton<SessionService>();
|
||||||
builder.Services.AddSingleton<StreamingService>();
|
builder.Services.AddSingleton<StreamingService>();
|
||||||
builder.Services.AddScoped<AuthenticationStateProvider, CustomAuthStateProvider>();
|
builder.Services.AddScoped<AuthenticationStateProvider, CustomAuthStateProvider>();
|
||||||
|
builder.Services.AddSingleton<ComposeService>();
|
||||||
builder.Services.AddAuthorizationCore();
|
builder.Services.AddAuthorizationCore();
|
||||||
builder.Services.AddCascadingAuthenticationState();
|
builder.Services.AddCascadingAuthenticationState();
|
||||||
builder.Services.AddBlazoredLocalStorageAsSingleton();
|
builder.Services.AddBlazoredLocalStorageAsSingleton();
|
||||||
|
|
Loading…
Add table
Reference in a new issue