Skip to content

Commit 80481e5

Browse files
committed
V14 Integrations (Semrush)
- Minor changes
1 parent 7965ff8 commit 80481e5

File tree

6 files changed

+891
-76
lines changed

6 files changed

+891
-76
lines changed

src/Umbraco.Cms.Integrations.SEO.Semrush/Api/Management/Controllers/GetRelatedPhrasesController.cs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,21 @@ public async Task<IActionResult> GetRelatedPhrases(string phrase, int pageNumber
4949

5050
if (response.IsSuccessStatusCode)
5151
{
52-
//var responseContent = await response.Content.ReadAsStringAsync();
53-
using (StreamReader r = new StreamReader("temp.json"))
54-
{
55-
var responseContent = r.ReadToEnd();
52+
var responseContent = await response.Content.ReadAsStringAsync();
5653

57-
var relatedPhrasesDeserialized = JsonSerializer.Deserialize<RelatedPhrasesDto>(responseContent);
54+
var relatedPhrasesDeserialized = JsonSerializer.Deserialize<RelatedPhrasesDto>(responseContent);
5855

59-
if (!relatedPhrasesDeserialized.IsSuccessful) return Ok(relatedPhrasesDeserialized);
56+
if (!relatedPhrasesDeserialized.IsSuccessful) return Ok(relatedPhrasesDeserialized);
6057

61-
_cacheHelper.AddCachedItem(cacheKey, responseContent);
58+
_cacheHelper.AddCachedItem(cacheKey, responseContent);
6259

63-
relatedPhrasesDeserialized.TotalPages = (int)Math.Ceiling((double)relatedPhrasesDeserialized.Data.Rows.Count / Constants.DefaultPageSize);
64-
relatedPhrasesDeserialized.Data.Rows = relatedPhrasesDeserialized.Data.Rows
65-
.Skip((pageNumber - 1) * Constants.DefaultPageSize)
66-
.Take(Constants.DefaultPageSize)
67-
.ToList();
60+
relatedPhrasesDeserialized.TotalPages = (int)Math.Ceiling((double)relatedPhrasesDeserialized.Data.Rows.Count / Constants.DefaultPageSize);
61+
relatedPhrasesDeserialized.Data.Rows = relatedPhrasesDeserialized.Data.Rows
62+
.Skip((pageNumber - 1) * Constants.DefaultPageSize)
63+
.Take(Constants.DefaultPageSize)
64+
.ToList();
6865

69-
return Ok(relatedPhrasesDeserialized);
70-
}
66+
return Ok(relatedPhrasesDeserialized);
7167
}
7268

7369
return Ok(relatedPhrasesDto);

src/Umbraco.Cms.Integrations.SEO.Semrush/Client/src/workspace/semrush-workspace.element.ts

Lines changed: 61 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,13 @@ export class SemrushWorkspaceElement extends UmbLitElement {
2020
#paginationManager = new UmbPaginationManager();
2121

2222
@state()
23-
_currentPageNumber = 1;
23+
private _loading = false;
2424

2525
@state()
26-
_totalPages = 1;
26+
private _currentPageNumber = 1;
2727

2828
@state()
29-
_nextPageInfo?: string;
30-
31-
@state()
32-
_previousPageInfo?: string;
29+
private _totalPages = 1;
3330

3431
@state()
3532
private authUrl: string = "";
@@ -47,17 +44,17 @@ export class SemrushWorkspaceElement extends UmbLitElement {
4744
@state()
4845
private _tableColumns: Array<UmbTableColumn> = [];
4946

50-
@state()
51-
private selectedproperty: string = "";
52-
@state()
53-
private propertyList: Array<ContentPropertyDtoModel> = [];
54-
5547
@state()
5648
private keywordList: RelatedPhrasesDtoModel | undefined = undefined;
5749

5850
@state()
5951
private searchPhrase: string = "";
6052

53+
@state()
54+
private selectedproperty: string = "";
55+
@state()
56+
private propertyList: Array<ContentPropertyDtoModel> = [];
57+
6158
@state()
6259
private selectedDatasource: string = "";
6360
@state()
@@ -121,10 +118,12 @@ export class SemrushWorkspaceElement extends UmbLitElement {
121118
async connectedCallback() {
122119
super.connectedCallback();
123120

121+
this._loading = true;
124122
await this.#validateToken();
125123
await this.#getDatasource();
126124
await this.#getAuthUrl();
127125
await this.#getContentProperties();
126+
this._loading = false;
128127
}
129128

130129
async #getContentProperties(){
@@ -136,43 +135,45 @@ export class SemrushWorkspaceElement extends UmbLitElement {
136135
}
137136

138137
async #getDatasource(){
139-
var result = await this.#semrushContext.getDataSources();
140-
if (!result) return;
138+
var { data } = await this.#semrushContext.getDataSources();
139+
if (!data) return;
141140

142-
this.datasourceList = result.data?.items;
141+
this.datasourceList = data.items;
143142
}
144143

145144
async #getAuthUrl(){
146-
var result = await this.#semrushContext.getAuthorizationUrl();
147-
if (!result) return;
145+
var { data } = await this.#semrushContext.getAuthorizationUrl();
146+
if (!data) return;
148147

149-
this.authUrl = result.data!;
148+
this.authUrl = data;
150149
}
151150

152151
async #validateToken(){
153-
var result = await this.#semrushContext.validateToken();
154-
if (!result) return;
152+
var { data } = await this.#semrushContext.validateToken();
153+
if (!data) return;
155154

156-
if (result.data?.isAuthorized){
157-
if (!result.data?.isValid){
155+
if (data.isAuthorized){
156+
if (!data.isValid){
158157
await this.#semrushContext.refreshAccessToken();
159158
return;
160159
}
161160

162-
this.account = result.data!;
161+
this.account = data;
163162
this.requestUpdate();
164163
this.dispatchEvent(new CustomEvent('property-value-change'));
165164
}
166165
}
167166

168167
async _search(){
169-
const result = await this.#semrushContext.getRelatedPhrases(this.searchPhrase, this._currentPageNumber, this.selectedDatasource, this.selectedMethod);
170-
if (!result) return;
168+
const { data } = await this.#semrushContext.getRelatedPhrases(this.searchPhrase, this._currentPageNumber, this.selectedDatasource, this.selectedMethod);
169+
if (!data) return;
171170

172-
this.keywordList = result.data;
173-
this._totalPages = result.data?.totalPages!;
174-
this.#createTableColumns(this.keywordList?.data!);
175-
this.#createTableItems(this.keywordList?.data!);
171+
this.keywordList = data;
172+
this._totalPages = data.totalPages;
173+
if(!!this.keywordList.data){
174+
this.#createTableColumns(this.keywordList.data);
175+
this.#createTableItems(this.keywordList.data);
176+
}
176177
}
177178

178179
_searchNew(){
@@ -215,10 +216,10 @@ export class SemrushWorkspaceElement extends UmbLitElement {
215216
if (authWindow) authWindow.close();
216217

217218
var code = event.data.url.slice(event.data.url.indexOf(codeParam) + codeParam.length);
218-
var result = await this.#semrushContext.getAccessToken(code);
219-
if (!result) return;
219+
var { data } = await this.#semrushContext.getAccessToken(code);
220+
if (!data) return;
220221

221-
if (result.data !== "error"){
222+
if (data !== "error"){
222223
await this.#validateToken();
223224

224225
this._showSuccess("Access Approved.");
@@ -367,6 +368,7 @@ export class SemrushWorkspaceElement extends UmbLitElement {
367368
<br/>
368369
369370
<uui-box headline="Keyword Search">
371+
${this._loading ? html`<div class="center loader"><uui-loader></uui-loader></div>` : ""}
370372
<uui-button
371373
slot="header-actions"
372374
look=${this.account.isAuthorized ? "secondary" : "primary"}
@@ -402,31 +404,34 @@ export class SemrushWorkspaceElement extends UmbLitElement {
402404
<uui-button label="Search keywords" look="primary" @click=${this._search} ?disabled=${!this.account.isAuthorized}></uui-button>
403405
</div>
404406
405-
${when(this.keywordList?.data !== undefined, () => html`
406-
<div class="semrush-table">
407-
<umb-table
408-
.columns=${this._tableColumns}
409-
.items=${this._tableItems}></umb-table>
410-
</div>
411-
412-
${(!this.account.isFreeAccount
413-
? html`
414-
<div>
415-
<p>
416-
Because you are using a free account, the number of results is limited to 10 records.
417-
Please upgrade your subscription for enhanced results.
418-
</p>
419-
</div>
420-
`
421-
: html`
422-
${this.#renderPagination()}
423-
`
424-
)}
425-
426-
<a href="https://www.semrush.com/analytics/keywordoverview" target="_blank">
427-
Get more insights at Semrush
428-
</a>
429-
`)}
407+
${this.keywordList?.data !== undefined && !!this.keywordList?.data
408+
? html`
409+
<div class="semrush-table">
410+
<umb-table
411+
.columns=${this._tableColumns}
412+
.items=${this._tableItems}></umb-table>
413+
</div>
414+
415+
${(!this.account.isFreeAccount
416+
? html`
417+
<div>
418+
<p>
419+
Because you are using a free account, the number of results is limited to 10 records.
420+
Please upgrade your subscription for enhanced results.
421+
</p>
422+
</div>
423+
`
424+
: html`
425+
${this.#renderPagination()}
426+
`
427+
)}
428+
429+
<a href="https://www.semrush.com/analytics/keywordoverview" target="_blank">
430+
Get more insights at Semrush
431+
</a>
432+
`
433+
: html``
434+
}
430435
</uui-box>
431436
</umb-body-layout>
432437
`;

0 commit comments

Comments
 (0)