Skip to content

Commit 344c65b

Browse files
committed
Add provider default implementation and remove service
1 parent 144e7f2 commit 344c65b

File tree

8 files changed

+29
-40
lines changed

8 files changed

+29
-40
lines changed

src/Umbraco.Cms.Integrations.Search.Algolia/AlgoliaComposer.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ public void Compose(IUmbracoBuilder builder)
3737

3838
builder.Services.AddScoped<IAlgoliaSearchPropertyIndexValueFactory, AlgoliaSearchPropertyIndexValueFactory>();
3939

40-
// register only as singleton to prevent exceptions in IAlgoliaIndexService
41-
builder.Services.AddSingleton<AlgoliaGeolocationService>();
40+
builder.Services.AddSingleton<IAlgoliaGeolocationProvider, AlgoliaNullGeolocationProvider>();
4241

4342
builder.AddAlgoliaConverters();
4443
}

src/Umbraco.Cms.Integrations.Search.Algolia/Builders/ContentRecordBuilder.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ public class ContentRecordBuilder
2323

2424
private readonly IUmbracoContextFactory _umbracoContextFactory;
2525

26-
private readonly AlgoliaGeolocationService _algoliaGeolocationService;
26+
private readonly IAlgoliaGeolocationProvider _algoliaGeolocationProvider;
2727

2828
public ContentRecordBuilder(
2929
IUserService userService,
3030
IPublishedUrlProvider urlProvider,
3131
IAlgoliaSearchPropertyIndexValueFactory algoliaSearchPropertyIndexValueFactory,
3232
IRecordBuilderFactory recordBuilderFactory,
3333
IUmbracoContextFactory umbracoContextFactory,
34-
AlgoliaGeolocationService algoliaGeolocationService)
34+
IAlgoliaGeolocationProvider algoliaGeolocationProvider)
3535
{
3636
_userService = userService;
3737

@@ -43,7 +43,7 @@ public ContentRecordBuilder(
4343

4444
_umbracoContextFactory = umbracoContextFactory;
4545

46-
_algoliaGeolocationService = algoliaGeolocationService;
46+
_algoliaGeolocationProvider = algoliaGeolocationProvider;
4747
}
4848

4949
public ContentRecordBuilder BuildFromContent(IContent content, Func<IProperty, bool> filter = null)
@@ -70,7 +70,7 @@ public ContentRecordBuilder BuildFromContent(IContent content, Func<IProperty, b
7070
_record.Path = content.Path.Split(',').ToList();
7171
_record.ContentTypeAlias = content.ContentType.Alias;
7272
_record.Url = _urlProvider.GetUrl(content.Id);
73-
_record.GeolocationData = _algoliaGeolocationService.GetGeolocationDataAsync().ConfigureAwait(false).GetAwaiter().GetResult();
73+
_record.GeolocationData = _algoliaGeolocationProvider.GetGeolocationAsync()?.ConfigureAwait(false).GetAwaiter().GetResult();
7474
_record.Data = new();
7575

7676
if (content.PublishedCultures.Count() > 0)

src/Umbraco.Cms.Integrations.Search.Algolia/Controllers/SearchController.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class SearchController : UmbracoAuthorizedApiController
3737

3838
private readonly IAlgoliaSearchPropertyIndexValueFactory _algoliaSearchPropertyIndexValueFactory;
3939

40-
private readonly AlgoliaGeolocationService _algoliaGeolocationService;
40+
private readonly IAlgoliaGeolocationProvider _algoliaGeolocationProvider;
4141

4242
private readonly IUmbracoContextFactory _umbracoContextFactory;
4343

@@ -56,7 +56,7 @@ public SearchController(
5656
IUmbracoContextFactory umbracoContextFactory,
5757
ILogger<SearchController> logger,
5858
IRecordBuilderFactory recordBuilderFactory,
59-
AlgoliaGeolocationService algoliaGeolocationService)
59+
IAlgoliaGeolocationProvider algoliaGeolocationProvider)
6060
{
6161
_indexService = indexService;
6262

@@ -78,7 +78,7 @@ public SearchController(
7878

7979
_recordBuilderFactory = recordBuilderFactory;
8080

81-
_algoliaGeolocationService = algoliaGeolocationService;
81+
_algoliaGeolocationProvider = algoliaGeolocationProvider;
8282
}
8383

8484
[HttpGet]
@@ -147,7 +147,7 @@ public async Task<IActionResult> BuildIndex([FromBody] IndexConfiguration indexC
147147
_algoliaSearchPropertyIndexValueFactory,
148148
_recordBuilderFactory,
149149
_umbracoContextFactory,
150-
_algoliaGeolocationService)
150+
_algoliaGeolocationProvider)
151151
.BuildFromContent(contentItem, (p) => contentDataItem.Properties.Any(q => q.Alias == p.Alias))
152152
.Build();
153153

src/Umbraco.Cms.Integrations.Search.Algolia/Handlers/AlgoliaContentCacheRefresherHandler.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class AlgoliaContentCacheRefresherHandler : INotificationAsyncHandler<Con
3535

3636
private readonly IAlgoliaSearchPropertyIndexValueFactory _algoliaSearchPropertyIndexValueFactory;
3737

38-
private readonly AlgoliaGeolocationService _geolocationService;
38+
private readonly IAlgoliaGeolocationProvider _algoliaGeolocationProvider;
3939

4040
private readonly IRecordBuilderFactory _recordBuilderFactory;
4141

@@ -50,7 +50,7 @@ public AlgoliaContentCacheRefresherHandler(
5050
IUserService userService,
5151
IPublishedUrlProvider urlProvider,
5252
IAlgoliaSearchPropertyIndexValueFactory algoliaSearchPropertyIndexValueFactory,
53-
AlgoliaGeolocationService geolocationService,
53+
IAlgoliaGeolocationProvider algoliaGeolocationProvider,
5454
IRecordBuilderFactory recordBuilderFactory,
5555
IUmbracoContextFactory umbracoContextFactory)
5656
{
@@ -62,7 +62,7 @@ public AlgoliaContentCacheRefresherHandler(
6262
_userService = userService;
6363
_urlProvider = urlProvider;
6464
_algoliaSearchPropertyIndexValueFactory = algoliaSearchPropertyIndexValueFactory;
65-
_geolocationService = geolocationService;
65+
_algoliaGeolocationProvider = algoliaGeolocationProvider;
6666
_recordBuilderFactory = recordBuilderFactory;
6767
_umbracoContextFactory = umbracoContextFactory;
6868
}
@@ -117,7 +117,7 @@ protected async Task RebuildIndex(IEnumerable<IContent> entities)
117117
_algoliaSearchPropertyIndexValueFactory,
118118
_recordBuilderFactory,
119119
_umbracoContextFactory,
120-
_geolocationService)
120+
_algoliaGeolocationProvider)
121121
.BuildFromContent(entity, (p) => indexConfiguration.Properties.Any(q => q.Alias == p.Alias))
122122
.Build();
123123

src/Umbraco.Cms.Integrations.Search.Algolia/Models/Record.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ public class Record
77
public Record()
88
{
99
Data = new Dictionary<string, object>();
10-
GeolocationData = new List<GeolocationEntity>();
1110
}
1211

1312
public Record(Record record)
@@ -62,8 +61,10 @@ public Record(Record record)
6261

6362
public string Url { get; set; }
6463

64+
#nullable enable
6565
[JsonProperty("_geoloc")]
66-
public List<GeolocationEntity> GeolocationData { get; set; }
66+
public List<GeolocationEntity>? GeolocationData { get; set; }
67+
#nullable disable
6768

6869
public Dictionary<string, object> Data { get; set; }
6970
}

src/Umbraco.Cms.Integrations.Search.Algolia/Services/AlgoliaGeolocationService.cs

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/Umbraco.Cms.Integrations.Search.Algolia/Services/AlgoliaIndexService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ namespace Umbraco.Cms.Integrations.Search.Algolia.Services
1111
public class AlgoliaIndexService : IAlgoliaIndexService
1212
{
1313
private readonly AlgoliaSettings _settings;
14-
private readonly AlgoliaGeolocationService _algoliaGeolocationService;
14+
private readonly IAlgoliaGeolocationProvider _algoliaGeolocationProvider;
1515

16-
public AlgoliaIndexService(IOptions<AlgoliaSettings> options, AlgoliaGeolocationService algoliaGeolocationService)
16+
public AlgoliaIndexService(IOptions<AlgoliaSettings> options, IAlgoliaGeolocationProvider algoliaGeolocationProvider)
1717
{
1818
_settings = options.Value;
19-
_algoliaGeolocationService = algoliaGeolocationService;
19+
_algoliaGeolocationProvider = algoliaGeolocationProvider;
2020
}
2121

2222
public async Task<Result> PushData(string name, List<Record> payload = null)
@@ -32,7 +32,7 @@ await index.SaveObjectsAsync(payload != null
3232
: new List<Record> {
3333
new Record {
3434
ObjectID = Guid.NewGuid().ToString(),
35-
GeolocationData = await _algoliaGeolocationService.GetGeolocationDataAsync(),
35+
GeolocationData = await _algoliaGeolocationProvider.GetGeolocationAsync(),
3636
Data = new Dictionary<string, object>()}
3737
}, autoGenerateObjectId: false);
3838

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Umbraco.Cms.Integrations.Search.Algolia.Models;
2+
3+
namespace Umbraco.Cms.Integrations.Search.Algolia.Services
4+
{
5+
public class AlgoliaNullGeolocationProvider : IAlgoliaGeolocationProvider
6+
{
7+
public Task<List<GeolocationEntity>> GetGeolocationAsync() => null;
8+
}
9+
}

0 commit comments

Comments
 (0)