|
29 | 29 | <DropdownMenu> |
30 | 30 | <DropdownItem @onclick="exportData" Type="DropdownItemType.Button"><i class="bi bi-cloud-download"></i> Export</DropdownItem> |
31 | 31 | <DropdownItem @onclick="importData" Type="DropdownItemType.Button"><i class="bi bi-cloud-upload"></i> Import</DropdownItem> |
32 | | - @if (!isMyChannel && showRefresh) |
| 32 | + @if (!isMyChannel) |
33 | 33 | { |
34 | | - <DropdownItem @onclick="refreshData" Type="DropdownItemType.Button"> |
35 | | - |
36 | | - <span class="position-relative badge rounded-pill bg-danger"> |
37 | | - Beta |
38 | | - <span class="visually-hidden">Beta function</span> |
39 | | - </span> |
40 | | - <i class="bi bi-arrow-clockwise"></i> Refresh data |
41 | | - </DropdownItem> |
| 34 | + @if (isRefreshing) |
| 35 | + { |
| 36 | + <DropdownItem Type="DropdownItemType.Button" Disabled="true"> |
| 37 | + <Spinner Type="SpinnerType.Border" Size="SpinnerSize.Small" Class="me-2" /> |
| 38 | + Refreshing... |
| 39 | + </DropdownItem> |
| 40 | + } |
| 41 | + else if (showRefresh) |
| 42 | + { |
| 43 | + <DropdownItem @onclick="refreshData" Type="DropdownItemType.Button"> |
| 44 | + <span class="position-relative badge rounded-pill bg-danger"> |
| 45 | + Beta |
| 46 | + <span class="visually-hidden">Beta function</span> |
| 47 | + </span> |
| 48 | + <i class="bi bi-arrow-clockwise"></i> Refresh data |
| 49 | + </DropdownItem> |
| 50 | + } |
42 | 51 | } |
43 | 52 |
|
44 | 53 | </DropdownMenu> |
|
76 | 85 | public string chatName { get; set; } |
77 | 86 | private bool isMyChannel = true; |
78 | 87 | private bool showRefresh = true; |
| 88 | + private bool isRefreshing = false; |
79 | 89 |
|
80 | 90 | NotificationModel nm = new NotificationModel(); |
81 | 91 |
|
|
95 | 105 | { |
96 | 106 | try |
97 | 107 | { |
98 | | - showRefresh = !fs.isChannelRefreshing(id); |
| 108 | + isRefreshing = fs.isChannelRefreshing(id); |
| 109 | + showRefresh = !isRefreshing; |
99 | 110 | long channelId = Convert.ToInt64(id); |
100 | 111 | chatName = ts.getChatName(channelId); |
101 | 112 | isMyChannel = ts.isMyChat(channelId); |
|
123 | 134 | } |
124 | 135 | public async Task refreshData() |
125 | 136 | { |
| 137 | + isRefreshing = true; |
126 | 138 | showRefresh = false; |
127 | 139 | await InvokeAsync(StateHasChanged); |
128 | | - await fs.refreshChannelFIles(id); |
| 140 | + |
| 141 | + try |
| 142 | + { |
| 143 | + await fs.refreshChannelFIles(id); |
| 144 | + } |
| 145 | + finally |
| 146 | + { |
| 147 | + isRefreshing = false; |
| 148 | + showRefresh = true; |
| 149 | + await InvokeAsync(StateHasChanged); |
| 150 | + } |
129 | 151 | } |
130 | 152 | } |
0 commit comments