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

더 자세히 ...

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

Public 멤버 함수

 FamilyHomeViewModel (IFamilyTenantStore tenants, FamilyOptions opts, IGlobalSettingsStore globalSettings)
async Task LoadGlobalSettingsAsync (CancellationToken ct=default)
async Task SaveGlobalSettingsAsync (CancellationToken ct=default)
Task< bool > LoginAsync ()
async Task LoadAsync (CancellationToken ct=default)
async Task< bool > CreateTenantAsync (FamilyCurrentUser? owner=null, CancellationToken ct=default)
async Task SetDisplayAsync (string slug, bool showOnHome, int pinOrder, CancellationToken ct=default)
async Task DeleteTenantAsync (string slug, CancellationToken ct=default)
async Task SetMaxImageSizeAsync (string slug, int? maxImageSizeMb, CancellationToken ct=default)
async Task SetMaxVideoSizeAsync (string slug, int? maxVideoSizeMb, CancellationToken ct=default)

속성

int MaxImageSizeMb = 20 [get, set]
int MaxVideoSizeMb = 500 [get, set]
bool IsAuthenticated [get, private set]
string LoginPassword = "" [get, set]
IReadOnlyList< FamilyConfigTenants = [] [get, private set]
string StatusMessage = "" [get, private set]
bool IsLoaded [get, private set]
string NewSlug = "" [get, set]
string NewFamilyName = "" [get, set]
string NewPassword = "" [get, set]

Private 속성

readonly IFamilyTenantStore _tenants
readonly FamilyOptions _opts
readonly IGlobalSettingsStore _globalSettings

상세한 설명

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

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

생성자 & 소멸자 문서화

◆ FamilyHomeViewModel()

FamiliesApp.ViewModels.FamilyHomeViewModel.FamilyHomeViewModel ( IFamilyTenantStore tenants,
FamilyOptions opts,
IGlobalSettingsStore globalSettings )
inline

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

매개변수
tenantstenants에 사용할 IFamilyTenantStore 값입니다.
optsopts에 사용할 FamilyOptions 값입니다.
globalSettingsglobal Settings에 사용할 IGlobalSettingsStore 값입니다.

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

78 {
79 _tenants = tenants;
80 _opts = opts;
81 _globalSettings = globalSettings;
82 }

다음을 참조함 : _globalSettings, _opts, _tenants.

멤버 함수 문서화

◆ CreateTenantAsync()

async Task< bool > FamiliesApp.ViewModels.FamilyHomeViewModel.CreateTenantAsync ( FamilyCurrentUser? owner = null,
CancellationToken ct = default )
inline

Tenant Async 값을 생성합니다.

매개변수
ownerowner에 사용할 FamilyCurrentUser? 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Create Tenant Async 작업에서 생성한 Task<bool> 결과입니다.

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

329 {
330 var slug = NewSlug.Trim().ToLowerInvariant();
331
332 if (string.IsNullOrWhiteSpace(slug))
333 { StatusMessage = "슬러그(URL ID)를 입력해주세요."; return false; }
334
335 if (string.IsNullOrWhiteSpace(NewFamilyName))
336 { StatusMessage = "가족 이름을 입력해주세요."; return false; }
337
338 if (string.IsNullOrWhiteSpace(NewPassword))
339 { StatusMessage = "어드민 비밀번호를 입력해주세요."; return false; }
340
341 if (NewPassword.Length < 8)
342 { StatusMessage = "어드민 비밀번호는 8자 이상이어야 합니다."; return false; }
343
344 if (slug == "admin")
345 { StatusMessage = "'admin'은 슬러그로 사용할 수 없습니다."; return false; }
346
347 if (await _tenants.ExistsAsync(slug, ct).ConfigureAwait(false))
348 { StatusMessage = $"이미 존재하는 슬러그입니다: {slug}"; return false; }
349
350 var config = new FamilyConfig
351 {
352 Slug = slug,
353 FamilyName = NewFamilyName.Trim(),
354 PasswordHash = DreaminePasswordHasher.HashPassword(NewPassword),
355 IsPublished = true
356 };
357
358 if (owner?.IsAuthenticated == true)
359 {
360 config.OwnerUserId = owner.Id;
361 config.OwnerProvider = owner.Provider;
362 config.OwnerEmail = owner.Email;
363 config.OwnerDisplayName = owner.DisplayName;
364 config.OwnerLinkedAt = DateTime.Now;
365 config.AdminUsers.Add(new FamilyAdminUser
366 {
367 UserId = owner.Id,
368 Provider = owner.Provider,
369 Email = owner.Email,
370 DisplayName = owner.DisplayName,
371 Role = "Owner",
372 AddedAt = DateTime.Now
373 });
374 }
375
376 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
377 await LoadAsync(ct).ConfigureAwait(false);
378
379 NewSlug = "";
380 NewFamilyName = "";
381 NewPassword = "";
382
383 StatusMessage = $"✅ '{slug}' 앨범이 생성되었습니다.";
384 return true;
385 }

다음을 참조함 : _tenants, FamiliesApp.Services.FamilyCurrentUser(), IsAuthenticated, LoadAsync(), NewFamilyName, NewPassword, NewSlug, StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ DeleteTenantAsync()

async Task FamiliesApp.ViewModels.FamilyHomeViewModel.DeleteTenantAsync ( string slug,
CancellationToken ct = default )
inline

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

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

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

479 {
480 try
481 {
482 await _tenants.DeleteAsync(slug, ct).ConfigureAwait(false);
483 await LoadAsync(ct).ConfigureAwait(false);
484 StatusMessage = $"🗑 '{slug}' 삭제 완료.";
485 }
486 catch (Exception ex)
487 {
488 StatusMessage = $"삭제 오류: {ex.Message}";
489 }
490 }

다음을 참조함 : _tenants, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ LoadAsync()

async Task FamiliesApp.ViewModels.FamilyHomeViewModel.LoadAsync ( CancellationToken ct = default)
inline

Async 데이터를 불러옵니다.

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

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

289 {
290 Tenants = await _tenants.GetAllAsync(ct).ConfigureAwait(false);
291 await LoadGlobalSettingsAsync(ct).ConfigureAwait(false);
292 IsLoaded = true;
293 StatusMessage = "";
294 }

다음을 참조함 : _tenants, IsLoaded, LoadGlobalSettingsAsync(), StatusMessage, Tenants.

다음에 의해서 참조됨 : CreateTenantAsync(), DeleteTenantAsync(), SetDisplayAsync(), SetMaxImageSizeAsync(), SetMaxVideoSizeAsync().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LoadGlobalSettingsAsync()

async Task FamiliesApp.ViewModels.FamilyHomeViewModel.LoadGlobalSettingsAsync ( CancellationToken ct = default)
inline

Global Settings Async 데이터를 불러옵니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Load Global Settings Async 작업에서 생성한 Task 결과입니다.

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

128 {
129 var settings = await _globalSettings.GetAsync(ct).ConfigureAwait(false);
130 MaxImageSizeMb = settings.MaxImageSizeMb;
131 MaxVideoSizeMb = settings.MaxVideoSizeMb;
132 }

다음을 참조함 : _globalSettings, MaxImageSizeMb, MaxVideoSizeMb.

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

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ LoginAsync()

Task< bool > FamiliesApp.ViewModels.FamilyHomeViewModel.LoginAsync ( )
inline

Login Async 작업을 수행합니다.

반환값
Login Async 작업에서 생성한 Task<bool> 결과입니다.

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

202 {
203 IsAuthenticated = DreaminePasswordHasher.VerifyPassword(LoginPassword, _opts.SuperAdminPassword);
204 StatusMessage = IsAuthenticated ? "" : "비밀번호가 틀렸습니다.";
205 return Task.FromResult(IsAuthenticated);
206 }

다음을 참조함 : _opts, IsAuthenticated, LoginPassword, StatusMessage.

◆ SaveGlobalSettingsAsync()

async Task FamiliesApp.ViewModels.FamilyHomeViewModel.SaveGlobalSettingsAsync ( CancellationToken ct = default)
inline

Global Settings Async 데이터를 저장합니다.

매개변수
ct취소 요청을 감시하는 토큰입니다.
반환값
Save Global Settings Async 작업에서 생성한 Task 결과입니다.

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

159 {
160 await _globalSettings.SaveAsync(
161 new GlobalSettings { MaxImageSizeMb = MaxImageSizeMb, MaxVideoSizeMb = MaxVideoSizeMb }, ct)
162 .ConfigureAwait(false);
163 StatusMessage = "✅ 전체 설정이 저장되었습니다.";
164 }

다음을 참조함 : _globalSettings, MaxImageSizeMb, MaxVideoSizeMb, StatusMessage.

◆ SetDisplayAsync()

async Task FamiliesApp.ViewModels.FamilyHomeViewModel.SetDisplayAsync ( string slug,
bool showOnHome,
int pinOrder,
CancellationToken ct = default )
inline

Display Async 값을 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
showOnHomeshow On Home에 사용할 bool 값입니다.
pinOrderpin Order에 사용할 int 값입니다.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Display Async 작업에서 생성한 Task 결과입니다.

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

436 {
437 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
438 if (config is null) return;
439 config.ShowOnHome = showOnHome;
440 config.PinOrder = pinOrder;
441 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
442 await LoadAsync(ct).ConfigureAwait(false);
443 StatusMessage = $"✅ '{slug}' 노출 설정 저장됨";
444 }

다음을 참조함 : _tenants, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetMaxImageSizeAsync()

async Task FamiliesApp.ViewModels.FamilyHomeViewModel.SetMaxImageSizeAsync ( string slug,
int? maxImageSizeMb,
CancellationToken ct = default )
inline

계정(가족 앨범)별 이미지 업로드 용량 제한을 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
maxImageSizeMbnull이면 전체 설정값을 따름, 0이면 무제한, 그 외는 MB 단위 제한.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Max Image Size Async 작업에서 생성한 Task 결과입니다.

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

533 {
534 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
535 if (config is null) return;
536 config.MaxImageSizeMb = maxImageSizeMb;
537 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
538 await LoadAsync(ct).ConfigureAwait(false);
539 StatusMessage = $"✅ '{slug}' 이미지 용량 제한 저장됨";
540 }

다음을 참조함 : _tenants, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetMaxVideoSizeAsync()

async Task FamiliesApp.ViewModels.FamilyHomeViewModel.SetMaxVideoSizeAsync ( string slug,
int? maxVideoSizeMb,
CancellationToken ct = default )
inline

계정(가족 앨범)별 동영상 업로드 용량 제한을 설정합니다.

매개변수
slugslug에 사용할 string 값입니다.
maxVideoSizeMbnull이면 전체 설정값을 따름, 0이면 무제한, 그 외는 MB 단위 제한.
ct취소 요청을 감시하는 토큰입니다.
반환값
Set Max Video Size Async 작업에서 생성한 Task 결과입니다.

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

583 {
584 var config = await _tenants.GetAsync(slug, ct).ConfigureAwait(false);
585 if (config is null) return;
586 config.MaxVideoSizeMb = maxVideoSizeMb;
587 await _tenants.SaveAsync(config, ct).ConfigureAwait(false);
588 await LoadAsync(ct).ConfigureAwait(false);
589 StatusMessage = $"✅ '{slug}' 동영상 용량 제한 저장됨";
590 }

다음을 참조함 : _tenants, LoadAsync(), StatusMessage.

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _globalSettings

readonly IGlobalSettingsStore FamiliesApp.ViewModels.FamilyHomeViewModel._globalSettings
private

global Settings 값을 보관합니다.

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

다음에 의해서 참조됨 : FamilyHomeViewModel(), LoadGlobalSettingsAsync(), SaveGlobalSettingsAsync().

◆ _opts

readonly FamilyOptions FamiliesApp.ViewModels.FamilyHomeViewModel._opts
private

opts 값을 보관합니다.

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

다음에 의해서 참조됨 : FamilyHomeViewModel(), LoginAsync().

◆ _tenants

readonly IFamilyTenantStore FamiliesApp.ViewModels.FamilyHomeViewModel._tenants
private

tenants 값을 보관합니다.

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

다음에 의해서 참조됨 : CreateTenantAsync(), DeleteTenantAsync(), FamilyHomeViewModel(), LoadAsync(), SetDisplayAsync(), SetMaxImageSizeAsync(), SetMaxVideoSizeAsync().

속성 문서화

◆ IsAuthenticated

bool FamiliesApp.ViewModels.FamilyHomeViewModel.IsAuthenticated
getprivate set

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

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

174{ get; private set; }

다음에 의해서 참조됨 : CreateTenantAsync(), LoginAsync().

◆ IsLoaded

bool FamiliesApp.ViewModels.FamilyHomeViewModel.IsLoaded
getprivate set

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

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

234{ get; private set; }

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

◆ LoginPassword

string FamiliesApp.ViewModels.FamilyHomeViewModel.LoginPassword = ""
getset

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

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

183{ get; set; } = "";

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

◆ MaxImageSizeMb

int FamiliesApp.ViewModels.FamilyHomeViewModel.MaxImageSizeMb = 20
getset

이미지(사진/커버) 업로드 최대 용량(MB). 0이면 무제한.

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

92{ get; set; } = 20;

다음에 의해서 참조됨 : LoadGlobalSettingsAsync(), SaveGlobalSettingsAsync().

◆ MaxVideoSizeMb

int FamiliesApp.ViewModels.FamilyHomeViewModel.MaxVideoSizeMb = 500
getset

동영상 업로드 최대 용량(MB). 0이면 무제한.

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

101{ get; set; } = 500;

다음에 의해서 참조됨 : LoadGlobalSettingsAsync(), SaveGlobalSettingsAsync().

◆ NewFamilyName

string FamiliesApp.ViewModels.FamilyHomeViewModel.NewFamilyName = ""
getset

New Family Name 값을 가져오거나 설정합니다.

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

253{ get; set; } = "";

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

◆ NewPassword

string FamiliesApp.ViewModels.FamilyHomeViewModel.NewPassword = ""
getset

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

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

262{ get; set; } = "";

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

◆ NewSlug

string FamiliesApp.ViewModels.FamilyHomeViewModel.NewSlug = ""
getset

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

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

244{ get; set; } = "";

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

◆ StatusMessage

string FamiliesApp.ViewModels.FamilyHomeViewModel.StatusMessage = ""
getprivate set

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

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

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

다음에 의해서 참조됨 : CreateTenantAsync(), DeleteTenantAsync(), LoadAsync(), LoginAsync(), SaveGlobalSettingsAsync(), SetDisplayAsync(), SetMaxImageSizeAsync(), SetMaxVideoSizeAsync().

◆ Tenants

IReadOnlyList<FamilyConfig> FamiliesApp.ViewModels.FamilyHomeViewModel.Tenants = []
getprivate set

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

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

216{ get; private set; } = [];

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


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