Families.Web 1.0.0.0
사진, 동영상, 글, 댓글과 반응을 가족끼리만 공유하는 비공개 앨범·타임라인 서비스입니다.
로딩중...
검색중...
일치하는것 없음
FamiliesApp.ViewModels.FamilyPostViewModel 클래스 참조sealed

더 자세히 ...

FamiliesApp.ViewModels.FamilyPostViewModel에 대한 협력 다이어그램:

Public 멤버 함수

 FamilyPostViewModel (IFamilyTenantStore tenants, IPostStore posts, IReactionStore reactions, IMediaService media)
string GetMediaUrl (string fileName)
string GetThumbUrl (string fileName)
string GetVideoUrl (string fileName)
async Task LoadAsync (string slug, string postId, CancellationToken ct=default)
async Task AddReactionAsync (string slug, string emoji, CancellationToken ct=default)
async Task AddCommentAsync (string slug, CancellationToken ct=default)
async Task DeleteCommentAsync (string slug, string commentId, CancellationToken ct=default)

정적 Public 멤버 함수

static bool IsExternalUrl (string s)
static bool IsYouTube (string url)
static string GetYouTubeEmbedUrl (string url)

속성

FamilyConfigConfig [get, private set]
PostEntryPost [get, private set]
ReactionSummary Reactions = new() [get, private set]
bool IsLoaded [get, private set]
bool NotFound [get, private set]
string ContentHtml [get]
bool AllowReactions [get]
bool AllowComments [get]
string ThemeName [get]
string FamilyName [get]
string CommentAuthor = "" [get, set]
string CommentBody = "" [get, set]
string CommentStatus = "" [get, private set]
bool IsSavingComment [get, private set]

Private 속성

readonly IFamilyTenantStore _tenants
readonly IPostStore _posts
readonly IReactionStore _reactions
readonly IMediaService _media

정적 Private 속성

static readonly MarkdownPipeline _mdPipeline

상세한 설명

Family Post View Model 기능과 관련 상태를 캡슐화합니다.

FamilyPostViewModel.cs 파일의 15 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ FamilyPostViewModel()

FamiliesApp.ViewModels.FamilyPostViewModel.FamilyPostViewModel ( IFamilyTenantStore tenants,
IPostStore posts,
IReactionStore reactions,
IMediaService media )
inline

지정한 설정으로 FamilyPostViewModel 클래스의 새 인스턴스를 초기화합니다.

매개변수
tenantstenants에 사용할 IFamilyTenantStore 값입니다.
postsposts에 사용할 IPostStore 값입니다.
reactionsreactions에 사용할 IReactionStore 값입니다.
mediamedia에 사용할 IMediaService 값입니다.

FamilyPostViewModel.cs 파일의 105 번째 라인에서 정의되었습니다.

107 {
108 _tenants = tenants;
109 _posts = posts;
110 _reactions = reactions;
111 _media = media;
112 }

다음을 참조함 : _media, _posts, _reactions, _tenants.

멤버 함수 문서화

◆ AddCommentAsync()

async Task FamiliesApp.ViewModels.FamilyPostViewModel.AddCommentAsync ( string slug,
CancellationToken ct = default )
inline

Comment Async 항목을 추가합니다.

매개변수
slugslug에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Add Comment Async 작업에서 생성한 Task 결과입니다.

FamilyPostViewModel.cs 파일의 572 번째 라인에서 정의되었습니다.

573 {
574 if (Post is null || !AllowComments || IsSavingComment) return;
575 if (string.IsNullOrWhiteSpace(CommentAuthor)) { CommentStatus = "이름을 입력해주세요."; return; }
576 if (string.IsNullOrWhiteSpace(CommentBody)) { CommentStatus = "댓글 내용을 입력해주세요."; return; }
577
578 IsSavingComment = true;
579 try
580 {
581 var entry = new CommentEntry
582 {
583 PostId = Post.Id,
584 AuthorName = CommentAuthor.Trim(),
585 Body = CommentBody.Trim(),
586 CreatedAt = DateTime.Now
587 };
588 await _reactions.AddCommentAsync(slug, Post.Id, entry, ct).ConfigureAwait(false);
589 Reactions = await _reactions.GetAsync(slug, Post.Id, ct).ConfigureAwait(false);
590 CommentAuthor = "";
591 CommentBody = "";
592 CommentStatus = "댓글이 등록되었습니다 💬";
593 }
594 catch { CommentStatus = "등록 중 오류가 발생했습니다."; }
595 finally { IsSavingComment = false; }
596 }

다음을 참조함 : _reactions, AllowComments, CommentAuthor, CommentBody, CommentStatus, IsSavingComment, Post, Reactions.

◆ AddReactionAsync()

async Task FamiliesApp.ViewModels.FamilyPostViewModel.AddReactionAsync ( string slug,
string emoji,
CancellationToken ct = default )
inline

Reaction Async 항목을 추가합니다.

매개변수
slugslug에 사용할 string 값입니다.
emojiemoji에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Add Reaction Async 작업에서 생성한 Task 결과입니다.

FamilyPostViewModel.cs 파일의 533 번째 라인에서 정의되었습니다.

534 {
535 if (Post is null || !AllowReactions) return;
536 await _reactions.AddReactionAsync(slug, Post.Id, emoji, ct).ConfigureAwait(false);
537 Reactions = await _reactions.GetAsync(slug, Post.Id, ct).ConfigureAwait(false);
538 }

다음을 참조함 : _reactions, AllowReactions, Post, Reactions.

◆ DeleteCommentAsync()

async Task FamiliesApp.ViewModels.FamilyPostViewModel.DeleteCommentAsync ( string slug,
string commentId,
CancellationToken ct = default )
inline

Delete Comment Async 작업을 수행합니다.

매개변수
slugslug에 사용할 string 값입니다.
commentIdcomment Id에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Delete Comment Async 작업에서 생성한 Task 결과입니다.

FamilyPostViewModel.cs 파일의 638 번째 라인에서 정의되었습니다.

639 {
640 if (Post is null) return;
641 await _reactions.DeleteCommentAsync(slug, Post.Id, commentId, ct).ConfigureAwait(false);
642 Reactions = await _reactions.GetAsync(slug, Post.Id, ct).ConfigureAwait(false);
643 }

다음을 참조함 : _reactions, Post, Reactions.

◆ GetMediaUrl()

string FamiliesApp.ViewModels.FamilyPostViewModel.GetMediaUrl ( string fileName)
inline

Media Url 값을 가져옵니다.

매개변수
fileNamefile Name에 사용할 string 값입니다.
반환값
Get Media Url 작업에서 생성한 string 결과입니다.

FamilyPostViewModel.cs 파일의 233 번째 라인에서 정의되었습니다.

233 =>
234 IsExternalUrl(fileName) ? fileName
235 : Post is null ? "" : _media.GetMediaUrl(Config?.Slug ?? "", Post.Id, fileName);

다음을 참조함 : _media, Config, Post.

◆ GetThumbUrl()

string FamiliesApp.ViewModels.FamilyPostViewModel.GetThumbUrl ( string fileName)
inline

Thumb Url 값을 가져옵니다.

매개변수
fileNamefile Name에 사용할 string 값입니다.
반환값
Get Thumb Url 작업에서 생성한 string 결과입니다.

FamilyPostViewModel.cs 파일의 261 번째 라인에서 정의되었습니다.

261 =>
262 IsExternalUrl(fileName) ? fileName
263 : Post is null ? "" : _media.GetThumbUrl(Config?.Slug ?? "", Post.Id, fileName);

다음을 참조함 : _media, Config, Post.

◆ GetVideoUrl()

string FamiliesApp.ViewModels.FamilyPostViewModel.GetVideoUrl ( string fileName)
inline

Video Url 값을 가져옵니다.

매개변수
fileNamefile Name에 사용할 string 값입니다.
반환값
Get Video Url 작업에서 생성한 string 결과입니다.

FamilyPostViewModel.cs 파일의 289 번째 라인에서 정의되었습니다.

289 =>
290 IsExternalUrl(fileName) ? fileName : GetMediaUrl(fileName);

◆ GetYouTubeEmbedUrl()

string FamiliesApp.ViewModels.FamilyPostViewModel.GetYouTubeEmbedUrl ( string url)
inlinestatic

You Tube Embed Url 값을 가져옵니다.

매개변수
urlurl에 사용할 string 값입니다.
반환값
Get You Tube Embed Url 작업에서 생성한 string 결과입니다.

FamilyPostViewModel.cs 파일의 372 번째 라인에서 정의되었습니다.

373 {
374 url = url.Trim();
375
376 // 이미 embed URL이면 그대로
377 if (url.Contains("/embed/", StringComparison.OrdinalIgnoreCase))
378 return url.Split('?')[0]; // 불필요한 쿼리 제거
379
380 // youtu.be/ID 단축 URL
381 if (url.Contains("youtu.be/", StringComparison.OrdinalIgnoreCase))
382 {
383 var after = url.Split(new[] { "youtu.be/" }, StringSplitOptions.None)[1];
384 var id = after.Split('?')[0].Split('#')[0].Trim();
385 return $"https://www.youtube.com/embed/{id}";
386 }
387
388 // youtube.com/shorts/ID
389 var shortsMatch = System.Text.RegularExpressions.Regex.Match(
390 url, @"youtube\.com/shorts/([^?&#/]+)", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
391 if (shortsMatch.Success)
392 return $"https://www.youtube.com/embed/{shortsMatch.Groups[1].Value}";
393
394 // youtube.com/watch?v=ID (또는 &v=ID)
395 var watchMatch = System.Text.RegularExpressions.Regex.Match(url, @"[?&]v=([^?&#]+)");
396 if (watchMatch.Success)
397 return $"https://www.youtube.com/embed/{watchMatch.Groups[1].Value}";
398
399 // 그래도 못 찾으면 원본 반환 (브라우저가 처리)
400 return url;
401 }

◆ IsExternalUrl()

bool FamiliesApp.ViewModels.FamilyPostViewModel.IsExternalUrl ( string s)
inlinestatic

Is External Url 조건을 확인합니다.

매개변수
s이벤트를 발생시킨 객체입니다.
반환값
Is External Url 조건이 충족되면 true이고, 그렇지 않으면 false입니다.

FamilyPostViewModel.cs 파일의 316 번째 라인에서 정의되었습니다.

316 =>
317 s.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ||
318 s.StartsWith("https://", StringComparison.OrdinalIgnoreCase);

◆ IsYouTube()

bool FamiliesApp.ViewModels.FamilyPostViewModel.IsYouTube ( string url)
inlinestatic

Is You Tube 조건을 확인합니다.

매개변수
urlurl에 사용할 string 값입니다.
반환값
Is You Tube 조건이 충족되면 true이고, 그렇지 않으면 false입니다.

FamilyPostViewModel.cs 파일의 344 번째 라인에서 정의되었습니다.

344 =>
345 url.Contains("youtube.com", StringComparison.OrdinalIgnoreCase) ||
346 url.Contains("youtu.be/", StringComparison.OrdinalIgnoreCase);

◆ LoadAsync()

async Task FamiliesApp.ViewModels.FamilyPostViewModel.LoadAsync ( string slug,
string postId,
CancellationToken ct = default )
inline

Async 데이터를 불러옵니다.

매개변수
slugslug에 사용할 string 값입니다.
postIdpost Id에 사용할 string 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Load Async 작업에서 생성한 Task 결과입니다.

FamilyPostViewModel.cs 파일의 481 번째 라인에서 정의되었습니다.

482 {
483 Config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
484 if (Config is null) { NotFound = true; IsLoaded = true; return; }
485
486 Post = await _posts.GetAsync(slug, postId, ct).ConfigureAwait(false);
487 if (Post is null) { NotFound = true; IsLoaded = true; return; }
488
489 Reactions = await _reactions.GetAsync(slug, postId, ct).ConfigureAwait(false);
490 IsLoaded = true;
491 }

다음을 참조함 : _posts, _reactions, _tenants, Config, IsLoaded, NotFound, Post, Reactions.

멤버 데이터 문서화

◆ _mdPipeline

readonly MarkdownPipeline FamiliesApp.ViewModels.FamilyPostViewModel._mdPipeline
staticprivate
초기값:
=
new MarkdownPipelineBuilder().UseAdvancedExtensions().Build()

md Pipeline 값을 보관합니다.

FamilyPostViewModel.cs 파일의 62 번째 라인에서 정의되었습니다.

◆ _media

readonly IMediaService FamiliesApp.ViewModels.FamilyPostViewModel._media
private

media 값을 보관합니다.

FamilyPostViewModel.cs 파일의 52 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : FamilyPostViewModel(), GetMediaUrl(), GetThumbUrl().

◆ _posts

readonly IPostStore FamiliesApp.ViewModels.FamilyPostViewModel._posts
private

posts 값을 보관합니다.

FamilyPostViewModel.cs 파일의 34 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : FamilyPostViewModel(), LoadAsync().

◆ _reactions

readonly IReactionStore FamiliesApp.ViewModels.FamilyPostViewModel._reactions
private

reactions 값을 보관합니다.

FamilyPostViewModel.cs 파일의 43 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AddCommentAsync(), AddReactionAsync(), DeleteCommentAsync(), FamilyPostViewModel(), LoadAsync().

◆ _tenants

readonly IFamilyTenantStore FamiliesApp.ViewModels.FamilyPostViewModel._tenants
private

tenants 값을 보관합니다.

FamilyPostViewModel.cs 파일의 25 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : FamilyPostViewModel(), LoadAsync().

속성 문서화

◆ AllowComments

bool FamiliesApp.ViewModels.FamilyPostViewModel.AllowComments
get

Allow Comments 값을 가져옵니다.

FamilyPostViewModel.cs 파일의 189 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AddCommentAsync().

◆ AllowReactions

bool FamiliesApp.ViewModels.FamilyPostViewModel.AllowReactions
get

Allow Reactions 값을 가져옵니다.

FamilyPostViewModel.cs 파일의 180 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : AddReactionAsync().

◆ CommentAuthor

string FamiliesApp.ViewModels.FamilyPostViewModel.CommentAuthor = ""
getset

Comment Author 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 412 번째 라인에서 정의되었습니다.

412{ get; set; } = "";

다음에 의해서 참조됨 : AddCommentAsync().

◆ CommentBody

string FamiliesApp.ViewModels.FamilyPostViewModel.CommentBody = ""
getset

Comment Body 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 421 번째 라인에서 정의되었습니다.

421{ get; set; } = "";

다음에 의해서 참조됨 : AddCommentAsync().

◆ CommentStatus

string FamiliesApp.ViewModels.FamilyPostViewModel.CommentStatus = ""
getprivate set

Comment Status 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 430 번째 라인에서 정의되었습니다.

430{ get; private set; } = "";

다음에 의해서 참조됨 : AddCommentAsync().

◆ Config

FamilyConfig? FamiliesApp.ViewModels.FamilyPostViewModel.Config
getprivate set

Config 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 122 번째 라인에서 정의되었습니다.

122{ get; private set; }

다음에 의해서 참조됨 : GetMediaUrl(), GetThumbUrl(), LoadAsync().

◆ ContentHtml

string FamiliesApp.ViewModels.FamilyPostViewModel.ContentHtml
get

Content Html 값을 가져옵니다.

FamilyPostViewModel.cs 파일의 168 번째 라인에서 정의되었습니다.

◆ FamilyName

string FamiliesApp.ViewModels.FamilyPostViewModel.FamilyName
get

Family Name 값을 가져옵니다.

FamilyPostViewModel.cs 파일의 207 번째 라인에서 정의되었습니다.

◆ IsLoaded

bool FamiliesApp.ViewModels.FamilyPostViewModel.IsLoaded
getprivate set

Is Loaded 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 149 번째 라인에서 정의되었습니다.

149{ get; private set; }

다음에 의해서 참조됨 : LoadAsync().

◆ IsSavingComment

bool FamiliesApp.ViewModels.FamilyPostViewModel.IsSavingComment
getprivate set

Is Saving Comment 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 439 번째 라인에서 정의되었습니다.

439{ get; private set; }

다음에 의해서 참조됨 : AddCommentAsync().

◆ NotFound

bool FamiliesApp.ViewModels.FamilyPostViewModel.NotFound
getprivate set

Not Found 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 158 번째 라인에서 정의되었습니다.

158{ get; private set; }

다음에 의해서 참조됨 : LoadAsync().

◆ Post

PostEntry? FamiliesApp.ViewModels.FamilyPostViewModel.Post
getprivate set

Post 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 131 번째 라인에서 정의되었습니다.

131{ get; private set; }

다음에 의해서 참조됨 : AddCommentAsync(), AddReactionAsync(), DeleteCommentAsync(), GetMediaUrl(), GetThumbUrl(), LoadAsync().

◆ Reactions

ReactionSummary FamiliesApp.ViewModels.FamilyPostViewModel.Reactions = new()
getprivate set

Reactions 값을 가져오거나 설정합니다.

FamilyPostViewModel.cs 파일의 140 번째 라인에서 정의되었습니다.

140{ get; private set; } = new();

다음에 의해서 참조됨 : AddCommentAsync(), AddReactionAsync(), DeleteCommentAsync(), LoadAsync().

◆ ThemeName

string FamiliesApp.ViewModels.FamilyPostViewModel.ThemeName
get

Theme Name 값을 가져옵니다.

FamilyPostViewModel.cs 파일의 198 번째 라인에서 정의되었습니다.


이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: