Families.Web
1.0.0.0
사진, 동영상, 글, 댓글과 반응을 가족끼리만 공유하는 비공개 앨범·타임라인 서비스입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
FamilyAlbumViewModel.cs
이 파일의 문서화 페이지로 가기
1
using
FamiliesApp.Models
;
2
using
FamiliesApp.Services
;
3
4
namespace
FamiliesApp.ViewModels
;
5
14
public
sealed
class
FamilyAlbumViewModel
15
{
24
private
readonly
IFamilyTenantStore
_tenants
;
33
private
readonly
IPostStore
_posts
;
42
private
readonly
IAlbumStore
_albums
;
51
private
readonly
IMediaService
_media
;
52
93
public
FamilyAlbumViewModel
(
IFamilyTenantStore
tenants,
IPostStore
posts,
94
IAlbumStore
albums,
IMediaService
media)
95
{
96
_tenants
= tenants;
97
_posts
= posts;
98
_albums
= albums;
99
_media
= media;
100
}
101
110
public
int
PageSize
=> Math.Clamp(
Config
?.
PageSize
?? 20, 5, 100);
111
120
public
FamilyConfig
?
Config
{
get
;
private
set
; }
129
public
IReadOnlyList<PostEntry>
Posts
{
get
;
private
set
; } = [];
138
public
IReadOnlyList<AlbumInfo>
Albums
{
get
;
private
set
; } = [];
147
public
bool
IsLoaded
{
get
;
private
set
; }
156
public
bool
NotFound
{
get
;
private
set
; }
165
public
int
CurrentPage
{
get
;
private
set
; } = 1;
174
public
int
TotalCount
{
get
;
private
set
; }
183
public
int
TotalPages
=> (int)Math.Ceiling((
double
)
TotalCount
/
PageSize
);
184
193
public
string
FamilyName
=>
Config
?.FamilyName ??
""
;
202
public
string
Bio
=>
Config
?.Bio ??
""
;
211
public
string
ThemeName
=>
Config
?.ThemeName ??
"warm"
;
220
public
bool
AllowReactions
=>
Config
?.AllowReactions ??
true
;
229
public
bool
AllowComments
=>
Config
?.AllowComments ??
true
;
230
239
public
string
CoverImageUrl
240
{
241
get
242
{
243
if
(
Config
is
null
||
string
.IsNullOrWhiteSpace(
Config
.CoverImageFileName))
return
""
;
244
return
_media
.GetCoverUrl(
Config
.Slug,
Config
.CoverImageFileName);
245
}
246
}
247
256
public
string
OgTitle
=> !
string
.IsNullOrWhiteSpace(
Config
?.
OgTitle
)
257
? Config.OgTitle
258
: $
"{FamilyName} 가족 앨범"
;
259
268
public
string
OgDescription
=> !
string
.IsNullOrWhiteSpace(
Config
?.
OgDescription
)
269
? Config.OgDescription
270
: $
"{FamilyName}의 소중한 순간들을 담은 가족 앨범입니다."
;
271
280
public
string
OgImageUrl
281
{
282
get
283
{
284
if
(
Config
is
null
)
return
""
;
285
var fn = !
string
.IsNullOrWhiteSpace(
Config
.OgImageFileName)
286
? Config.OgImageFileName
287
:
Config
.CoverImageFileName;
288
return
string
.IsNullOrWhiteSpace(fn) ?
""
:
_media
.GetCoverUrl(
Config
.Slug, fn);
289
}
290
}
291
316
private
static
bool
IsExternalUrl
(
string
s) =>
317
s.StartsWith(
"http://"
, StringComparison.OrdinalIgnoreCase) ||
318
s.StartsWith(
"https://"
, StringComparison.OrdinalIgnoreCase);
319
352
public
string
GetMediaUrl
(
string
postId,
string
fileName) =>
353
IsExternalUrl
(fileName) ? fileName :
_media
.GetMediaUrl(
Config
?.Slug ??
""
, postId, fileName);
354
387
public
string
GetThumbUrl
(
string
postId,
string
fileName) =>
388
IsExternalUrl
(fileName) ? fileName :
_media
.GetThumbUrl(
Config
?.Slug ??
""
, postId, fileName);
389
422
public
async Task
LoadAsync
(
string
slug, CancellationToken ct =
default
)
423
{
424
Config
= await
_tenants
.GetAsync(slug, ct).ConfigureAwait(
false
);
425
if
(
Config
is
null
) {
NotFound
=
true
;
IsLoaded
=
true
;
return
; }
426
427
Albums
= await
_albums
.GetAllAsync(slug, ct).ConfigureAwait(
false
);
428
await
LoadPageAsync
(slug, 1, ct).ConfigureAwait(
false
);
429
IsLoaded
=
true
;
430
}
431
472
public
async Task
LoadPageAsync
(
string
slug,
int
page, CancellationToken ct =
default
)
473
{
474
CurrentPage
= page;
475
var (items, total) = await
_posts
.GetPageAsync(slug, page,
PageSize
, ct).ConfigureAwait(
false
);
476
Posts
= items;
477
TotalCount
= total;
478
}
479
520
public
async Task<IReadOnlyList<PostEntry>>
GetAlbumPostsAsync
(
string
slug,
string
albumId, CancellationToken ct =
default
)
521
=> await
_posts
.GetByAlbumAsync(slug, albumId, ct).ConfigureAwait(
false
);
522
571
public
async Task<(IReadOnlyList<PostEntry> Items,
int
TotalCount
)>
GetAlbumPageAsync
(
572
string
slug,
string
albumId,
int
page, CancellationToken ct =
default
)
573
=> await
_posts
.GetByAlbumPageAsync(slug, albumId, page,
PageSize
, ct).ConfigureAwait(
false
);
574
}
FamiliesApp.Models
Definition
AlbumInfo.cs:1
FamiliesApp.Services
Definition
FamilyOptions.cs:4
FamiliesApp.ViewModels
Definition
FamilyAdminViewModel.cs:7
FamiliesApp.Models.FamilyConfig
Definition
FamilyConfig.cs:12
FamiliesApp.Services.IAlbumStore
Definition
IAlbumStore.cs:14
FamiliesApp.Services.IFamilyTenantStore
Definition
IFamilyTenantStore.cs:14
FamiliesApp.Services.IMediaService
Definition
IMediaService.cs:15
FamiliesApp.Services.IPostStore
Definition
IPostStore.cs:14
FamiliesApp.ViewModels.FamilyAlbumViewModel.Posts
IReadOnlyList< PostEntry > Posts
Definition
FamilyAlbumViewModel.cs:129
FamiliesApp.ViewModels.FamilyAlbumViewModel.OgImageUrl
string OgImageUrl
Definition
FamilyAlbumViewModel.cs:281
FamiliesApp.ViewModels.FamilyAlbumViewModel.LoadAsync
async Task LoadAsync(string slug, CancellationToken ct=default)
Definition
FamilyAlbumViewModel.cs:422
FamiliesApp.ViewModels.FamilyAlbumViewModel.TotalPages
int TotalPages
Definition
FamilyAlbumViewModel.cs:183
FamiliesApp.ViewModels.FamilyAlbumViewModel._media
readonly IMediaService _media
Definition
FamilyAlbumViewModel.cs:51
FamiliesApp.ViewModels.FamilyAlbumViewModel.PageSize
int PageSize
Definition
FamilyAlbumViewModel.cs:110
FamiliesApp.ViewModels.FamilyAlbumViewModel.CurrentPage
int CurrentPage
Definition
FamilyAlbumViewModel.cs:165
FamiliesApp.ViewModels.FamilyAlbumViewModel.TotalCount
int TotalCount
Definition
FamilyAlbumViewModel.cs:174
FamiliesApp.ViewModels.FamilyAlbumViewModel.FamilyAlbumViewModel
FamilyAlbumViewModel(IFamilyTenantStore tenants, IPostStore posts, IAlbumStore albums, IMediaService media)
Definition
FamilyAlbumViewModel.cs:93
FamiliesApp.ViewModels.FamilyAlbumViewModel.FamilyName
string FamilyName
Definition
FamilyAlbumViewModel.cs:193
FamiliesApp.ViewModels.FamilyAlbumViewModel.GetMediaUrl
string GetMediaUrl(string postId, string fileName)
Definition
FamilyAlbumViewModel.cs:352
FamiliesApp.ViewModels.FamilyAlbumViewModel.GetThumbUrl
string GetThumbUrl(string postId, string fileName)
Definition
FamilyAlbumViewModel.cs:387
FamiliesApp.ViewModels.FamilyAlbumViewModel.OgDescription
string OgDescription
Definition
FamilyAlbumViewModel.cs:268
FamiliesApp.ViewModels.FamilyAlbumViewModel.Config
FamilyConfig? Config
Definition
FamilyAlbumViewModel.cs:120
FamiliesApp.ViewModels.FamilyAlbumViewModel.OgTitle
string OgTitle
Definition
FamilyAlbumViewModel.cs:256
FamiliesApp.ViewModels.FamilyAlbumViewModel._tenants
readonly IFamilyTenantStore _tenants
Definition
FamilyAlbumViewModel.cs:24
FamiliesApp.ViewModels.FamilyAlbumViewModel.Albums
IReadOnlyList< AlbumInfo > Albums
Definition
FamilyAlbumViewModel.cs:138
FamiliesApp.ViewModels.FamilyAlbumViewModel.NotFound
bool NotFound
Definition
FamilyAlbumViewModel.cs:156
FamiliesApp.ViewModels.FamilyAlbumViewModel.ThemeName
string ThemeName
Definition
FamilyAlbumViewModel.cs:211
FamiliesApp.ViewModels.FamilyAlbumViewModel.IsLoaded
bool IsLoaded
Definition
FamilyAlbumViewModel.cs:147
FamiliesApp.ViewModels.FamilyAlbumViewModel.AllowReactions
bool AllowReactions
Definition
FamilyAlbumViewModel.cs:220
FamiliesApp.ViewModels.FamilyAlbumViewModel.IsExternalUrl
static bool IsExternalUrl(string s)
Definition
FamilyAlbumViewModel.cs:316
FamiliesApp.ViewModels.FamilyAlbumViewModel.GetAlbumPageAsync
async Task<(IReadOnlyList< PostEntry > Items, int TotalCount)> GetAlbumPageAsync(string slug, string albumId, int page, CancellationToken ct=default)
Definition
FamilyAlbumViewModel.cs:571
FamiliesApp.ViewModels.FamilyAlbumViewModel.Bio
string Bio
Definition
FamilyAlbumViewModel.cs:202
FamiliesApp.ViewModels.FamilyAlbumViewModel._posts
readonly IPostStore _posts
Definition
FamilyAlbumViewModel.cs:33
FamiliesApp.ViewModels.FamilyAlbumViewModel.CoverImageUrl
string CoverImageUrl
Definition
FamilyAlbumViewModel.cs:240
FamiliesApp.ViewModels.FamilyAlbumViewModel.GetAlbumPostsAsync
async Task< IReadOnlyList< PostEntry > > GetAlbumPostsAsync(string slug, string albumId, CancellationToken ct=default)
Definition
FamilyAlbumViewModel.cs:520
FamiliesApp.ViewModels.FamilyAlbumViewModel.AllowComments
bool AllowComments
Definition
FamilyAlbumViewModel.cs:229
FamiliesApp.ViewModels.FamilyAlbumViewModel._albums
readonly IAlbumStore _albums
Definition
FamilyAlbumViewModel.cs:42
FamiliesApp.ViewModels.FamilyAlbumViewModel.LoadPageAsync
async Task LoadPageAsync(string slug, int page, CancellationToken ct=default)
Definition
FamilyAlbumViewModel.cs:472
ViewModels
FamilyAlbumViewModel.cs
다음에 의해 생성됨 :
1.17.0