@@ -98,7 +98,8 @@ IObservable<IEnumerable<AccountCacheItem>> GetUser()
98
98
{
99
99
return hostCache . GetAndRefreshObject ( "user" ,
100
100
( ) => apiClient . GetUser ( ) . Select ( AccountCacheItem . Create ) , TimeSpan . FromMinutes ( 5 ) , TimeSpan . FromDays ( 7 ) )
101
- . Take ( 1 )
101
+ . PublishLast ( )
102
+ . RefCount ( )
102
103
. ToList ( ) ;
103
104
}
104
105
@@ -107,7 +108,7 @@ IObservable<IEnumerable<AccountCacheItem>> GetUserOrganizations()
107
108
return GetUserFromCache ( ) . SelectMany ( user =>
108
109
hostCache . GetAndRefreshObject ( user . Login + "|orgs" ,
109
110
( ) => apiClient . GetOrganizations ( ) . Select ( AccountCacheItem . Create ) . ToList ( ) ,
110
- TimeSpan . FromMinutes ( 5 ) , TimeSpan . FromDays ( 7 ) ) )
111
+ TimeSpan . FromMinutes ( 2 ) , TimeSpan . FromDays ( 7 ) ) )
111
112
. Catch < IEnumerable < AccountCacheItem > , KeyNotFoundException > (
112
113
// This could in theory happen if we try to call this before the user is logged in.
113
114
e =>
@@ -125,8 +126,12 @@ IObservable<IEnumerable<AccountCacheItem>> GetUserOrganizations()
125
126
public IObservable < IReadOnlyList < IRepositoryModel > > GetRepositories ( )
126
127
{
127
128
return GetUserRepositories ( RepositoryType . Owner )
128
- . Take ( 1 )
129
- . Concat ( GetUserRepositories ( RepositoryType . Member ) . Take ( 1 ) )
129
+ . PublishLast ( )
130
+ . RefCount ( )
131
+ . Concat ( GetUserRepositories ( RepositoryType . Member )
132
+ . PublishLast ( )
133
+ . RefCount ( )
134
+ )
130
135
. Concat ( GetAllRepositoriesForAllOrganizations ( ) ) ;
131
136
}
132
137
@@ -174,7 +179,7 @@ IObservable<IReadOnlyList<IRepositoryModel>> GetUserRepositories(RepositoryType
174
179
return Observable . Defer ( ( ) => GetUserFromCache ( ) . SelectMany ( user =>
175
180
hostCache . GetAndRefreshObject ( string . Format ( CultureInfo . InvariantCulture , "{0}|{1}:repos" , user . Login , repositoryType ) ,
176
181
( ) => GetUserRepositoriesFromApi ( repositoryType ) ,
177
- TimeSpan . FromMinutes ( 5 ) ,
182
+ TimeSpan . FromMinutes ( 2 ) ,
178
183
TimeSpan . FromDays ( 7 ) ) )
179
184
. ToReadOnlyList ( Create ) )
180
185
. Catch < IReadOnlyList < IRepositoryModel > , KeyNotFoundException > (
@@ -202,7 +207,10 @@ IObservable<IReadOnlyList<IRepositoryModel>> GetAllRepositoriesForAllOrganizatio
202
207
{
203
208
return GetUserOrganizations ( )
204
209
. SelectMany ( org => org . ToObservable ( ) )
205
- . SelectMany ( org => GetOrganizationRepositories ( org . Login ) . Take ( 1 ) ) ;
210
+ . SelectMany ( org => GetOrganizationRepositories ( org . Login )
211
+ . PublishLast ( )
212
+ . RefCount ( )
213
+ ) ;
206
214
}
207
215
208
216
IObservable < IReadOnlyList < IRepositoryModel > > GetOrganizationRepositories ( string organization )
@@ -211,7 +219,7 @@ IObservable<IReadOnlyList<IRepositoryModel>> GetOrganizationRepositories(string
211
219
hostCache . GetAndRefreshObject ( string . Format ( CultureInfo . InvariantCulture , "{0}|{1}|repos" , user . Login , organization ) ,
212
220
( ) => apiClient . GetRepositoriesForOrganization ( organization ) . Select (
213
221
RepositoryCacheItem . Create ) . ToList ( ) ,
214
- TimeSpan . FromMinutes ( 5 ) ,
222
+ TimeSpan . FromMinutes ( 2 ) ,
215
223
TimeSpan . FromDays ( 7 ) ) )
216
224
. ToReadOnlyList ( Create ) )
217
225
. Catch < IReadOnlyList < IRepositoryModel > , KeyNotFoundException > (
0 commit comments