FIRIAMMessageDefinition.m 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*
  2. * Copyright 2017 Google
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #import "FIRIAMMessageDefinition.h"
  17. @implementation FIRIAMMessageRenderData
  18. - (instancetype)initWithMessageID:(NSString *)messageID
  19. messageName:(NSString *)messageName
  20. contentData:(id<FIRIAMMessageContentData>)contentData
  21. renderingEffect:(FIRIAMRenderingEffectSetting *)renderEffect {
  22. if (self = [super init]) {
  23. _contentData = contentData;
  24. _renderingEffectSettings = renderEffect;
  25. _messageID = [messageID copy];
  26. _name = [messageName copy];
  27. }
  28. return self;
  29. }
  30. @end
  31. @implementation FIRIAMMessageDefinition
  32. - (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
  33. startTime:(NSTimeInterval)startTime
  34. endTime:(NSTimeInterval)endTime
  35. triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers
  36. appData:(nullable NSDictionary *)appData
  37. isTestMessage:(BOOL)isTestMessage {
  38. if (self = [super init]) {
  39. _renderData = renderData;
  40. _renderTriggers = renderTriggers;
  41. _startTime = startTime;
  42. _endTime = endTime;
  43. _isTestMessage = isTestMessage;
  44. _appData = [appData copy];
  45. }
  46. return self;
  47. }
  48. - (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
  49. startTime:(NSTimeInterval)startTime
  50. endTime:(NSTimeInterval)endTime
  51. triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers {
  52. return [self initWithRenderData:renderData
  53. startTime:startTime
  54. endTime:endTime
  55. triggerDefinition:renderTriggers
  56. appData:nil
  57. isTestMessage:NO];
  58. }
  59. - (instancetype)initTestMessageWithRenderData:(FIRIAMMessageRenderData *)renderData {
  60. return [self initWithRenderData:renderData
  61. startTime:0
  62. endTime:0
  63. triggerDefinition:@[]
  64. appData:nil
  65. isTestMessage:YES];
  66. }
  67. - (BOOL)messageHasExpired {
  68. return self.endTime < [[NSDate date] timeIntervalSince1970];
  69. }
  70. - (BOOL)messageRenderedOnTrigger:(FIRIAMRenderTrigger)trigger {
  71. for (FIRIAMDisplayTriggerDefinition *nextTrigger in self.renderTriggers) {
  72. if (nextTrigger.triggerType == trigger) {
  73. return YES;
  74. }
  75. }
  76. return NO;
  77. }
  78. - (BOOL)messageRenderedOnAnalyticsEvent:(NSString *)eventName {
  79. for (FIRIAMDisplayTriggerDefinition *nextTrigger in self.renderTriggers) {
  80. if (nextTrigger.triggerType == FIRIAMRenderTriggerOnFirebaseAnalyticsEvent &&
  81. [nextTrigger.firebaseEventName isEqualToString:eventName]) {
  82. return YES;
  83. }
  84. }
  85. return NO;
  86. }
  87. - (BOOL)messageHasStarted {
  88. return self.startTime < [[NSDate date] timeIntervalSince1970];
  89. }
  90. @end