File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 33 public class ClientSettings
44 {
55 public int PageSize { get ; set ; }
6+ public bool AutoViewNewMessages { get ; set ; }
67 }
78}
Original file line number Diff line number Diff line change 11export default class ClientSettings {
2- constructor ( pageSize : number ) {
2+ constructor ( pageSize : number , autoViewNewMessages : boolean = false ) {
33 this . pageSize = pageSize ;
4+ this . autoViewNewMessages = autoViewNewMessages ;
45 }
56
67 pageSize : number ;
8+ autoViewNewMessages : boolean ;
79}
Original file line number Diff line number Diff line change @@ -21,6 +21,11 @@ export default class MessageNotificationManager {
2121
2222 refresh = debounce ( this . refreshInternal , 500 ) ;
2323
24+ private get autoViewNewMessages ( ) : boolean {
25+ const stored = window . localStorage . getItem ( "auto-view-new-messages" ) ;
26+ return stored === "true" ;
27+ }
28+
2429 async refreshInternal ( suppressNotifications : boolean ) {
2530
2631 if ( ! this . mailboxName ) {
@@ -36,6 +41,11 @@ export default class MessageNotificationManager {
3641 this . unnotifiedMessages = messagesToAdd . concat ( this . unnotifiedMessages ) ;
3742 this . lastNotifiedMessage = this . unnotifiedMessages [ 0 ] ;
3843
44+ // Auto-view the latest message if the setting is enabled
45+ if ( ! suppressNotifications && this . autoViewNewMessages ) {
46+ this . onClick ( this . unnotifiedMessages [ 0 ] ) ;
47+ }
48+
3949 if ( ! suppressNotifications && Notification . permission == "granted" ) {
4050 if ( this . visibleNotificationCloseTimeout ) {
4151 clearTimeout ( this . visibleNotificationCloseTimeout ) ;
Original file line number Diff line number Diff line change 7474
7575 <el-switch v-model =" server.disableHtmlCompatibilityCheck" :disabled =" server.lockedSettings.disableHtmlCompatibilityCheck" />
7676 </el-form-item >
77+
78+ <el-form-item label =" Auto view new messages as they arrive" >
79+ <el-switch v-model =" autoViewNewMessages" />
80+ </el-form-item >
7781 </el-tab-pane >
7882 <el-tab-pane label =" SMTP Server" >
7983
475479 }
476480 }
477481
482+ get autoViewNewMessages(): boolean {
483+ const stored = window .localStorage .getItem (" auto-view-new-messages" );
484+ return stored === " true" ;
485+ }
486+
487+ set autoViewNewMessages(value : boolean ) {
488+ window .localStorage .setItem (" auto-view-new-messages" , value .toString ());
489+ }
490+
478491 async save() {
479492 this .saving = true ;
480493 this .error = null ;
Original file line number Diff line number Diff line change @@ -27,7 +27,8 @@ public ApiModel.ClientSettings Get()
2727 var clientProps = clientOptions . Value ;
2828 return new ApiModel . ClientSettings
2929 {
30- PageSize = clientProps . PageSize
30+ PageSize = clientProps . PageSize ,
31+ AutoViewNewMessages = clientProps . AutoViewNewMessages
3132 } ;
3233 }
3334 }
Original file line number Diff line number Diff line change @@ -6,5 +6,10 @@ public record ClientOptions
66 /// Page size for message pagination
77 /// </summary>
88 public int PageSize { get ; set ; } = 25 ;
9+
10+ /// <summary>
11+ /// Whether to automatically view new messages as they arrive
12+ /// </summary>
13+ public bool AutoViewNewMessages { get ; set ; } = false ;
914 }
1015}
You can’t perform that action at this time.
0 commit comments