Skip to content

Commit ab32015

Browse files
committed
fix(admob): use content-view
feat: customMuteThisAdAvailable feat: muteThisAdWithReason
1 parent 95122cb commit ab32015

File tree

4 files changed

+34
-55
lines changed

4 files changed

+34
-55
lines changed

packages/firebase-admob/nativead/common.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { ContainerView, CoreTypes, CSSType, Property, View } from '@nativescript/core';
1+
import { ContainerView, ContentView, CoreTypes, CSSType, Property, View } from '@nativescript/core';
22
import { AdEventType } from '../common';
33
import { IMediaContent, INativeAd } from '.';
44

55
@CSSType('NativeAdView')
6-
export abstract class NativeAdViewBase extends ContainerView {
6+
export abstract class NativeAdViewBase extends ContentView {
77
abstract adChoicesView: View;
88

99
abstract advertiserView: View;

packages/firebase-admob/nativead/index.android.ts

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,7 @@ export class NativeAdView extends NativeAdViewBase implements AddChildFromBuilde
1919
}
2020

2121
_addChildFromBuilder(name: string, value: any): void {
22-
if (value instanceof View && !value.parent && !this._child) {
23-
this._addView(value);
24-
this._child = value;
25-
}
26-
}
27-
28-
public eachChildView(callback: (child: View) => boolean): void {
29-
callback(this._child);
30-
}
31-
32-
onLoaded() {
33-
super.onLoaded();
34-
if (this._child && (<any>this._native).indexOfChild(this._child.nativeView) === -1) {
35-
(<any>this._native).addView(this._child.nativeView);
36-
}
22+
this.content = value;
3723
}
3824

3925
_adChoicesView: View;
@@ -296,6 +282,10 @@ export class NativeAd implements INativeAd {
296282
return MediaContent.fromNative(this.native?.getMediaContent?.());
297283
}
298284

285+
get customMuteThisAdAvailable() {
286+
return this.native?.isCustomMuteThisAdEnabled?.();
287+
}
288+
299289
isCustomClickGestureEnabled(): boolean {
300290
return this.native?.isCustomClickGestureEnabled?.();
301291
}
@@ -363,6 +353,13 @@ export class NativeAd implements INativeAd {
363353
}
364354
return result;
365355
}
356+
357+
muteThisAdWithReason(reason: MuteThisAdReason) {
358+
if (reason?.native) {
359+
this.native?.muteThisAd?.(reason.native);
360+
}
361+
}
362+
366363
get images() {
367364
const result = [];
368365
const images = this.native?.getImages?.();

packages/firebase-admob/nativead/index.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,10 @@ export declare class NativeAd implements INativeAd {
155155

156156
readonly mediaContent: MediaContent;
157157

158+
readonly customMuteThisAdAvailable: boolean;
159+
158160
isCustomClickGestureEnabled(): boolean;
161+
159162
enableCustomClickGesture(): void;
160163

161164
readonly advertiser: string;
@@ -172,6 +175,8 @@ export declare class NativeAd implements INativeAd {
172175

173176
readonly muteThisAdReasons: MuteThisAdReason[];
174177

178+
muteThisAdWithReason(reason: MuteThisAdReason);
179+
175180
readonly images: NativeAdImage[];
176181
}
177182

packages/firebase-admob/nativead/index.ios.ts

Lines changed: 15 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -19,46 +19,14 @@ export class NativeAdView extends NativeAdViewBase implements AddChildFromBuilde
1919
}
2020

2121
_addChildFromBuilder(name: string, value: any): void {
22-
if (value instanceof View) {
23-
this._child = value;
24-
}
22+
this.content = value;
2523
}
2624

27-
public eachChildView(callback: (child: View) => boolean): void {
28-
if (this._child) {
29-
callback(this._child);
30-
}
31-
}
32-
33-
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
34-
const result = View.measureChild(this, this._child, widthMeasureSpec, heightMeasureSpec);
35-
36-
const width = Utils.layout.getMeasureSpecSize(widthMeasureSpec);
37-
const widthMode = Utils.layout.getMeasureSpecMode(widthMeasureSpec);
38-
39-
const height = Utils.layout.getMeasureSpecSize(heightMeasureSpec);
40-
const heightMode = Utils.layout.getMeasureSpecMode(heightMeasureSpec);
41-
42-
const measureWidth = Math.max(result.measuredWidth, this.effectiveMinWidth);
43-
const measureHeight = Math.max(result.measuredHeight, this.effectiveMinHeight);
44-
45-
const widthAndState = View.resolveSizeAndState(measureWidth, width, widthMode, 0);
46-
const heightAndState = View.resolveSizeAndState(measureHeight, height, heightMode, 0);
47-
48-
this.setMeasuredDimension(widthAndState, heightAndState);
49-
}
50-
51-
public onLayout(left: number, top: number, right: number, bottom: number): void {
52-
View.layoutChild(this, this._child, 0, 0, right - left, bottom - top);
53-
}
54-
55-
onLoaded() {
56-
super.onLoaded();
57-
if (this._child) {
58-
this._addView(this._child);
59-
this._native.addSubview(this._child.nativeView);
60-
}
61-
}
25+
// public eachChildView(callback: (child: View) => boolean): void {
26+
// if (this._child) {
27+
// callback(this._child);
28+
// }
29+
// }
6230

6331
_adChoicesView: View;
6432
get adChoicesView(): View {
@@ -376,6 +344,9 @@ export class NativeAd implements INativeAd {
376344
return MediaContent.fromNative(this.native?.mediaContent);
377345
}
378346

347+
get customMuteThisAdAvailable() {
348+
return this.native.customMuteThisAdAvailable;
349+
}
379350
isCustomClickGestureEnabled(): boolean {
380351
return this.native?.customClickGestureEnabled;
381352
}
@@ -433,6 +404,12 @@ export class NativeAd implements INativeAd {
433404
return result;
434405
}
435406

407+
muteThisAdWithReason(reason: MuteThisAdReason) {
408+
if (reason?.native) {
409+
this.native?.muteThisAdWithReason?.(reason.native);
410+
}
411+
}
412+
436413
get images() {
437414
const result = [];
438415
const images = this.native?.images;

0 commit comments

Comments
 (0)