Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial implementation of purchase collection. #308

Merged
merged 12 commits into from
Jul 29, 2024
Merged
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion 31
compileSdkVersion 34

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
Expand All @@ -40,7 +40,7 @@ android {
defaultConfig {
applicationId "com.olmps.memoClient"
minSdkVersion 21
targetSdkVersion 31
targetSdkVersion 34
versionCode 7
versionName flutterVersionName
}
Expand Down
1 change: 1 addition & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
Expand Down
6 changes: 3 additions & 3 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
buildscript {
ext.kotlin_version = '1.6.20'
ext.kotlin_version = '1.8.22'
repositories {
google()
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.android.tools.build:gradle:7.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.5'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
Expand All @@ -28,6 +28,6 @@ subprojects {
project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
2 changes: 1 addition & 1 deletion android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip
44 changes: 44 additions & 0 deletions assets/collections/0_chatGPT_premium.json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esse é um exemplo, melhor não subir ele junto, manter para testes, ou fazer um deck real pra já inserirmos

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acho q renomeia esse cara pra mock, pra depois nós tirarmos ele

Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"id": "0_chatGPT_premium",
"name": "teste",
"description": "teste",
"category": "Premium",
"tags": [
"ChatGPT"
],
"isPremium": true,
"appStoreId": "com.olmps.memo_099_in_app_purchase_deck",
"playStoreId": "com.olmps.memo_099_in_app_purchase",
"contributors": [
{
"name": "chatGPT",
"url": "https://www.linkedin.com/",
"imageUrl": "https://media-exp1.licdn.com/dms/image/C4E03AQFYmdJJeE9gmA/profile-displayphoto-shrink_400_400/0/1517688960443?e=1631750400&v=beta&t=bpxRB_CL0-3CaT4nzadf1PKpSblm2I_Z7yjm6gEdaBM"
}
],
"memos": [
{
"uniqueId": "03c9a8d5-9e27-4ec2-8a3c-7bf20431b890",
"question": [
{
"insert": "Testes e mais testes\n"
}
],
"answer": [
{
"insert": "Isso é mais conhecido como "
},
{
"insert": "testes",
"attributes": {
"bold": true,
"underline": true
}
},
{
"insert": ".\n"
}
]
}
]
}
5 changes: 4 additions & 1 deletion assets/collections/bdd_fundamentos_01.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"name": "BDD - Fundamentos",
"description": "Existem diversos paradigmas de desenvolvimento de software. Dentre estes, está o desenvolvimento orientado a comportamento (BDD). Neste deck, vamos conhecer um pouco sobre o BDD, uma das melhores formas de otimizar tanto seu processo de desenvolvimento quanto o produto final gerado.",
"category": "Testes",
"tags": ["tests", "bdd"],
"tags": [
"tests",
"bdd"
],
"contributors": [
{
"name": "Nicolas Nascimento",
Expand Down
5 changes: 4 additions & 1 deletion assets/collections/comecando_com_git.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"name": "Começando com Git",
"description": "\"Git é um sistema de controle de versões distribuído, usado principalmente no desenvolvimento de software, mas pode ser usado para registrar o histórico de edições de qualquer tipo de arquivo. O Git foi inicialmente projetado e desenvolvido por Linus Torvalds para o desenvolvimento do kernel Linux, mas foi adotado por muitos outros projetos.\" - Wikipedia, 2021.",
"category": "Versionamento",
"tags": ["git", "versionamento"],
"tags": [
"git",
"versionamento"
],
"contributors": [
{
"name": "@matuella",
Expand Down
6 changes: 5 additions & 1 deletion assets/collections/ecossistema_do_flutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@
"name": "Ecossistema do Flutter - Fundamentos",
"description": "\"Flutter é um kit de desenvolvimento de interface de usuário (UI toolkit), de código aberto, criado pelo Google, que possibilita a criação de aplicativos compilados nativamente. Atualmente pode compilar para Android, iOS, Windows, Mac, Linux, Google Fuchsia e Web.\" - Wikipedia, 2021.",
"category": "Flutter",
"tags": ["flutter", "framework", "cross-platform"],
"tags": [
"flutter",
"framework",
"cross-platform"
],
"contributors": [
{
"name": "@matuella",
Expand Down
5 changes: 4 additions & 1 deletion assets/collections/fundamentos_scrum.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"name": "Fundamentos do Scrum",
"description": "O Scrum é um framework de gerenciamento de projetos, da organização ao desenvolvimento ágil de produtos complexos e adaptativos com o mais alto valor possível, através de várias técnicas, utilizado desde o início de 1990 e que atualmente é utilizado em mais de 60% dos projetos ágeis em todo o mundo. - Wikipedia, 2021",
"category": "Scrum",
"tags": ["agile", "scrum"],
"tags": [
"agile",
"scrum"
],
"contributors": [
{
"name": "Olympus",
Expand Down
5 changes: 4 additions & 1 deletion assets/collections/guia_scrum.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"name": "Guia do Scrum",
"description": "O guia do scrum é um documento pequeno, que descreve tudo o que existe no Scrum. Muitas pessoas que dizem conhecer o Scrum, nunca leram o documento. Não pode ser pela quantidade de páginas, que são menos de 20. O guia do scrum estabelece pilares, valores, artefatos, papéis e responsabilidades para que uma equipe possa organizar o seu fluxo de trabalho, encontrando formas de priorizar o trabalho a ser realizado, acompanhar dificuldades e progresso, revisar o trabalho feito e ainda garantir ações de melhoria ao longo do tempo.",
"category": "Scrum",
"tags": ["agile", "scrum"],
"tags": [
"agile",
"scrum"
],
"contributors": [
{
"name": "Daniel Wildt",
Expand Down
5 changes: 4 additions & 1 deletion assets/collections/kotlin_fundamentos_01.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"name": "Kotlin - Fundamentos",
"description": "Nessa coleção de memórias você vai ser introduzido na linguagem de programação Kotlin. Embora ler a documentação do Kotlin seja fácil e agradável, aprender por exemplos é um tipo diferente de diversão (confira os links abaixo).",
"category": "Kotlin",
"tags": ["kotlin", "linguagem de programação"],
"tags": [
"kotlin",
"linguagem de programação"
],
"contributors": [
{
"name": "Lucas Montano",
Expand Down
4 changes: 3 additions & 1 deletion assets/collections/manifesto_agil.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
"name": "Manifesto Ágil",
"description": "Em Fevereiro de 2001, no Snowbird ski resort em Utah, 17 pessoas se apresentam para falar, se divertir e encontrar caminhos comuns nas práticas de engenharia e organização de projetos que vinham testando, validando e aprendendo. O que emerge deste encontro de 2 dias foi o Agile ‘Software Development’ Manifesto. Representantes de diferentes metodologias estavam presentes nesta data: Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, e outras pessoas que eram simpáticas a necessidade de alternativas para projetos direcionados por documentação, normalmente direcionados por processos de desenvolvimento de software pesados. Todos signatários terminam o encontro com o termo Agile, termo que aparece em cena por indicação de Martin Fowler, que já aparecia na cena de eXtreme Programming anos anteriores.",
"category": "Metodologia Ágil",
"tags": ["agile"],
"tags": [
"agile"
],
"contributors": [
{
"name": "Daniel Wildt",
Expand Down
5 changes: 4 additions & 1 deletion assets/collections/swift_fundamentos_01.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
"name": "Fundamentos de Swift I",
"description": "\"Swift é uma linguagem de programação desenvolvida pela Apple para desenvolvimento no iOS, macOS, watchOS, tvOS e Linux. O compilador usa a infraestrutura do LLVM e é distribuído junto do Xcode desde a versão 6.\" - Wikipedia, 2021",
"category": "Swift",
"tags": ["swift", "linguagem de programação"],
"tags": [
"swift",
"linguagem de programação"
],
"contributors": [
{
"name": "@matuella",
Expand Down
13 changes: 8 additions & 5 deletions ios/Runner.xcodeproj/project.pbxproj
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isso foi gerado por ti para fazer o revenueCat funcionar ou foi automático pelo XCode?

Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 54;
objects = {

/* Begin PBXBuildFile section */
Expand Down Expand Up @@ -165,7 +165,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1300;
LastUpgradeCheck = 1510;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
Expand Down Expand Up @@ -212,10 +212,12 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
);
name = "Thin Binary";
outputPaths = (
Expand Down Expand Up @@ -266,6 +268,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
Expand Down Expand Up @@ -379,7 +382,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down Expand Up @@ -461,7 +464,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -512,7 +515,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1300"
LastUpgradeVersion = "1510"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand Down
1 change: 1 addition & 0 deletions lib/application/app.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class AppRoot extends StatelessWidget {
executionServices.overrideWithValue(state.executionServices),
progressServices.overrideWithValue(state.progressServices),
resourceServices.overrideWithValue(state.resourceServices),
purchaseServices.overrideWithValue(state.collectionPurchaseServices)
],
child: _LoadedAppRoot(),
),
Expand Down
2 changes: 2 additions & 0 deletions lib/application/constants/dimensions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ const double genericBorderHeight = 2;
const textTagBorderRadius = BorderRadius.all(Radius.circular(2));
const double cardBorderWidth = 4;

const double collectionsBlurSize = 5;

const double resourceLinkEmojiTextSize = 20;

const double iconSize = 24;
Expand Down
3 changes: 3 additions & 0 deletions lib/application/constants/exception_strings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ String descriptionForException(BaseException exception) {

case ExceptionType.failedToOpenUrl:
return 'Algo deu errado ao tentar abrir o link!';

case ExceptionType.failedToPurchase:
return 'Algo deu errado ao tentar realizar a compra!';
default:
return 'Algo deu errado. Por favor tente novamente';
}
Expand Down
8 changes: 8 additions & 0 deletions lib/application/constants/strings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ const collectionsSectionHeaderSeeAll = 'Ver todos';

const collectionsStartNow = 'Começar Agora';

const collectionPurchase = 'Deseja comprar este Deck?';
const collectionSuccessPurchase = 'Deck comprado com sucesso!';
String collectionPurchaseDeck(double price) => 'Comprar deck - R\$ ${price.toStringAsFixed(2)}';
// TODO(joao): check the best place to store the const double.
const double collectionPrice = 0.99;

String collectionsEmptyTitleSegment(CollectionsSegment segment) {
switch (segment) {
case CollectionsSegment.explore:
Expand Down Expand Up @@ -94,6 +100,7 @@ const jumpTo = 'Pular para';
// Tags Component
//
const tags = 'Tags';
const premium = 'PREMIUM';
const tagsHint = 'Adicione as tags...';
const suggestions = 'Sugestões';
const addTags = 'Adicionar Tags';
Expand Down Expand Up @@ -186,6 +193,7 @@ const memos = 'Memos';
const next = 'Próximo';
const cancel = 'Cancelar';
const remove = 'Remover';
const purchase = 'Comprar';

const recallLevel = 'Nível de Fixação';

Expand Down
Loading