Markdown. Privacy Policies. Injection dep updated

This commit is contained in:
vjrj 2018-07-12 09:57:31 +02:00
parent 8301e6a40e
commit f0ab472b3a
21 changed files with 487 additions and 25 deletions

View file

@ -20,6 +20,10 @@ flutter packages pub run build_runner build
```
also you can run with `watch` instead of `build` to build with any code change.
## Testing
Run `flutter test` for doing unit testing.
## Data source acknowledgements
*We acknowledge the use of data and imagery from LANCE FIRMS operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ*.

152
assets/pages/privacy-en.md Normal file
View file

@ -0,0 +1,152 @@
p# PRIVACY POLICY #
*Last updated July 12, 2018*
**In Short**: *Your privacy is important to us. We do not do business with your data, we do not share it with third parties and we only worry about the fires and how to strengthen neighborhoods against them.*
Thank you for choosing to be part of our community 'All Against the Fires' at Comunes Association (“we”, “us”, or “our”). We are committed to protecting your personal information and your right to privacy. If you have any questions or concerns about our policy, or our practices with regards to your personal information, please contact us at info@comunes.org.
When you visit our website [fires.comunes.org](https://fires.comunes.org), mobile application, and use our services, you trust us with your personal information. We take your privacy very seriously. In this privacy notice, we describe our privacy policy. We seek to explain to you in the clearest way possible what information we collect, how we use it and what rights you have in relation to it. We hope you take some time to read through it carefully, as it is important. If there are any terms in this privacy policy that you do not agree with, please discontinue use of our Sites or Apps and our services.
This privacy policy applies to all information collected through our website (such as [fires.comunes.org](https://fires.comunes.org)), mobile application (the "**Apps**"), and/or any related services, or events (we refer to them collectively in this privacy policy as the "**Sites**").
**Please read this privacy policy carefully as it will help you make informed decisions about sharing your personal information with us.**
## 1. WHAT INFORMATION DO WE COLLECT? ##
### Information automatically collected ###
**In Short:** *Some information such as IP address and/or browser and device characteristics is collected
automatically when you visit our Sites or Apps.*
We automatically collect certain information when you visit, use or navigate the Sites or Apps. This information does not reveal your specific identity (like your name or contact information) but may include device and usage information, such as your IP address, browser and device characteristics, operating system, language preferences, referring URLs, device name, country, location, information about how and when you use our Sites or Apps and other technical information. This information is primarily needed to maintain the security and operation of our Sites or Apps, and for our internal analytics and reporting purposes. Like many businesses, we also collect information through cookies and similar technologies.
### Information collected through our Apps ###
**In Short:** *We may collect information regarding your geo-location, push notifications, when you use our apps.*
If you use our Apps, we may also collect the following information:
- *Geo-Location Information.* We may request at some point access or permission to location-based information from your mobile device to provide location-based services. If you wish to change our access or permissions, you may do so in your device's settings.
- *Push Notifications.* We may request to send you push notifications regarding your account or the mobile application. If you wish to opt-out from receiving these types of communications, you may turn them off in your device's settings.
## 2. HOW DO WE USE YOUR INFORMATION? ##
**In Short:** *We process your information for purposes based on legitimate interests, the fulfillment of our contract with you, compliance with our legal obligations, and/or your consent.*
We use personal information collected via our Sites or Apps for a variety of purposes described below. We process your personal information for these purposes in order to enter into or perform a contract with you ("Contractual"), with your consent ("Consent"), and/or for compliance with our legal obligations ("Legal Reasons"). We indicate the specific processing grounds we rely on next to each purpose listed below.
We use the information we collect or receive:
- **To facilitate account creation and logon process** with your Consent. If you choose to link your account with us to a third party account \*(such as your Google or Telegram account), we use the information you allowed us to collect from those third parties to facilitate account creation and logon process.
- **Request Feedback**. We may use your information to request feedback and to contact you about your use of our Sites or Apps.
- **To enable user-to-user communications** with your Consent. We may use your information in order to enable user-to-user communications with each user's consent.
- **To enforce our terms, conditions and policies**.
- **To respond to legal requests and prevent harm** for Legal Reasons. If we receive a subpoena or other legal request, we may need to inspect the data we hold to determine how to respond.
## 3. WILL YOUR INFORMATION BE SHARED WITH ANYONE? ##
**In Short:** *We only share information with your consent, to comply with laws or to protect your rights.*
We only share and disclose your information in the following situations:
- **Compliance with Laws**. We may disclose your information where we are legally required to do so in order to comply with applicable law, governmental requests, a judicial proceeding, court order, or legal process, such as in response to a court order or a subpoena (including in response to public authorities to meet national security or law enforcement requirements).
- **Vital Interests and Legal Rights**. We may disclose your information where we believe it is necessary to investigate, prevent, or take action regarding potential violations of our policies, suspected fraud, situations involving potential threats to the safety of any person and illegal activities, or as evidence in litigation in which we are involved.
- **With your Consent**. We may disclose your personal information for any other purpose with your consent.
## 4. DO WE USE COOKIES AND OTHER TRACKING TECHNOLOGIES? ##
**In Short:** *We may use cookies and other tracking technologies to collect and store your information.*
We may use cookies to access or store information about account login and your user preferences (like your prefered language).
## 5. DO WE USE GOOGLE MAPS? ##
**In Short:** *Yes, we use Google Maps for the purpose of providing better service.*
This website, mobile application, or Telegram application uses Google Maps APIs. You may find the Google Maps APIs Terms of Service [here](https://developers.google.com/maps/terms). To better understand Google's Privacy Policy, please refer to this [link](https://policies.google.com/privacy).
By using our Maps API Implementation, you agree to be bound by Google's Terms of Service. You agree to allow us to obtain or cache your location. You may revoke your consent at anytime. We use information about location in conjunction with data from other data providers.
## 6. HOW LONG DO WE KEEP YOUR INFORMATION? ##
**In Short:** *We keep your information for as long as necessary to fulfill the purposes outlined in this privacy policy unless otherwise required by law.*
We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy policy, unless a longer retention period is required or permitted by law (such as tax, accounting or other legal requirements). No purpose in this policy will require us keeping your personal information for longer than the period of time in which users have an account with us.
When we have no ongoing legitimate need to process your personal information, we will either delete or anonymize it, or, if this is not possible (for example, because your personal information has been stored in backup archives), then we will securely store your personal information and isolate it from any further processing until deletion is possible.
## 7.HOW DO WE KEEP YOUR INFORMATION SAFE? ##
**In Short:** *We aim to protect your personal information through a system of organizational and technical security measures.*
We have implemented appropriate technical and organizational security measures designed to protect the security of any personal information we process. However, please also remember that we cannot guarantee that the internet itself is 100% secure. Although we will do our best to protect your personal information, transmission of personal information to and from our Sites or Apps is at your own risk. You should only access the services within a secure environment.
## 8. DO WE COLLECT INFORMATION FROM MINORS? ##
**In Short:** *We do not knowingly collect data from or market to children under 18 years of age.*
We do not knowingly solicit data from or market to children under 18 years of age. By using the Sites or Apps, you represent that you are at least 18 or that you are the parent or guardian of such a minor and consent to such minor dependent's use of the Sites or Apps. If we learn that personal information from users less than 18 years of age has been collected, we will deactivate the account and take reasonable measures to promptly delete such data from our records. If you become aware of any data we have collected from children under age 18, please contact us at info@comunes.org.
## 9. WHAT ARE YOUR PRIVACY RIGHTS? ##
**In Short:** *In some regions, such as the European Economic Area, you have rights that allow you greater access to and control over your personal information. You may review, change, or terminate your account at any time.*
In some regions (like the European Economic Area), you have certain rights under applicable data protection laws. These may include the right (i) to request access and obtain a copy of your personal information, (ii) to request rectification or erasure; (iii) to restrict the processing of your personal information; and (iv) if applicable, to data portability. In certain circumstances, you may also have the right to object to the processing of your personal information. To make such a request, please use the contact details provided below. We will consider and act upon any request in accordance with applicable data protection laws.
If we are relying on your consent to process your personal information, you have the right to withdraw your consent at any time. Please note however that this will not affect the lawfulness of the processing before its withdrawal.
If you are resident in the European Economic Area and you believe we are unlawfully processing your personal information, you also have the right to complain to your local data protection supervisory authority. You can find their contact details here: [http://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm](http://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm)
### Account Information ###
If you would at any time like to review or change the information in your account or terminate your account, you can:
- Log into your account settings and update your user account.
Upon your request to terminate your account, we will deactivate or delete your account and information from our active databases. However, some information may be retained in our files to prevent fraud, troubleshoot problems, assist with any investigations, enforce our Terms of Use and/or comply with legal requirements.
**Cookies and similar technologies:** Most Web browsers are set to accept cookies by default. If you prefer, you can usually choose to set your browser to remove cookies and to reject cookies. If you choose to remove cookies or reject cookies, this could affect certain features or services of our Sites or Apps.
**Opting out of email notifications:** You can unsubscribe from our notification emails at any time by clicking on the unsubscribe link in the emails that we send or by contacting us using the details provided below. You will then be removed from these emails however, we will still need to send you service-related emails that are necessary for the administration and use of your account. To otherwise opt-out, you may:
- Note your preferences when you register an account with the site.
- Access your account settings and update preferences.
## 10. DO CALIFORNIA RESIDENTS HAVE SPECIFIC PRIVACY RIGHTS? ##
**In Short:** *Yes, if you are a resident of California, you are granted specific rights regarding access to your personal information.*
California Civil Code Section 1798.83, also known as the "Shine The Light" law, permits our users who are California residents to request and obtain from us, once a year and free of charge, information about categories of personal information (if any) we disclosed to third parties for direct marketing purposes and the names and addresses of all third parties with which we shared personal information in the immediately preceding calendar year. If you are a California resident and would like to make such a request, please submit your request in writing to us using the contact information provided below.
If you are under 18 years of age, reside in California, and have a registered account with the Sites or Apps, you have the right to request removal of unwanted data that you publicly post on the Sites or Apps. To request removal of such data, please contact us using the contact information provided below, and include the email address associated with your account and a statement that you reside in California. We will make sure the data is not publicly displayed on the Sites or Apps, but please be aware that the data may not be completely or comprehensively removed from our systems.
## 11. DO WE MAKE UPDATES TO THIS POLICY? ##
**In Short:** *Yes, we will update this policy as necessary to stay compliant with relevant laws.*
We may update this privacy policy from time to time. The updated version will be indicated by an updated "Revised" date and the updated version will be effective as soon as it is accessible. If we make material changes to this privacy policy, we may notify you either by prominently posting a notice of such changes or by directly sending you a notification. We encourage you to review this privacy policy frequently to be informed of how we are protecting your information.
## 12. HOW CAN YOU CONTACT US ABOUT THIS POLICY? ##
If you have questions or comments about this policy, you may email us at info@comunes.org or by post to:
COMUNES ASSOCIATION
ALICANTE
If you have any further questions or comments about us or our policies, email us at info@comunes.org or by post to:
COMUNES ASSOCIATION
ALICANTE

151
assets/pages/privacy-es.md Normal file
View file

@ -0,0 +1,151 @@
# POLÍTICA DE PRIVACIDAD #
*Última actualización 12 de julio de 2018*
**En resumen**: *Su privacidad es importante para nosotros/as. No hacemos negocios con sus datos, no los compartimos con terceros y solo nos preocupan los incendios y cómo fortalecer vecindarios contra ellos.*
Gracias por elegir ser parte de nuestra comunidad 'Tod@s contra los Fuegos' en la Asociación de Comunes ("nosotras/os" o "nos"). Nos comprometemos a proteger su información personal y su derecho a la privacidad. Si tiene alguna pregunta o inquietud sobre nuestra política o nuestras prácticas con respecto a su información personal, contáctenos a info@comunes.org.
Cuando visita nuestro sitio web [fuegos.comunes.org](https://fuegos.comunes.org), la aplicación móvil y utiliza nuestros servicios, confía en nosotras/os con su información personal. Nos tomamos su privacidad muy en serio. En este aviso de privacidad, describimos nuestra política de privacidad. Buscamos explicarte de la manera más clara posible qué información recopilamos, cómo la utilizamos y qué derechos tienes en relación con ella. Esperamos que se tome un tiempo para leer detenidamente, ya que es importante. Si hay términos en esta política de privacidad con los que no está de acuerdo, interrumpa el uso de nuestros Sitios o Aplicaciones y nuestros servicios.
Esta política de privacidad se aplica a toda la información recopilada a través de nuestro sitio web (como [fuegos.comunes.org](https://fuegos.comunes.org)), la aplicación móvil (las "**Aplicaciones**") y/o cualquier servicio relacionado o eventos (nos referimos a ellos colectivamente en esta política de privacidad como los "**Sitios**").
**Lea atentamente esta política de privacidad, ya que le ayudará a tomar decisiones informadas sobre cómo compartir su información personal con nosotras/os.**
## 1. ¿QUÉ INFORMACIÓN RECOPILAMOS? ##
### Información recopilada automáticamente ###
**En resumen:** *Recopilamos información automáticamente, como la dirección IP y/o las características del navegador y del dispositivo, cuando visita nuestros Sitios o Aplicaciones.*
Recopilamos cierta información automáticamente cuando visita, utiliza o navega por nuestros Sitios o Aplicaciones. Esta información no revela su identidad específica (como su nombre o información de contacto) pero puede incluir información de uso y dispositivo, como su dirección IP, características del navegador y del dispositivo, sistema operativo, preferencias de idioma, URL de referencia, nombre del dispositivo, país, ubicación , información sobre cómo y cuándo utiliza nuestros sitios o aplicaciones y otra información técnica. Esta información es principalmente necesaria para mantener la seguridad y el funcionamiento de nuestros sitios o aplicaciones, y para nuestros fines de análisis internos e informes. Al igual que muchas empresas, también recopilamos información a través de cookies y tecnologías similares.
### Información recopilada a través de nuestras aplicaciones ###
**En resumen:** *Podemos recopilar información sobre su ubicación geográfica, notificaciones push, cuando usa nuestras aplicaciones.*
Si usa nuestras aplicaciones, también podemos recopilar la siguiente información:
- *Información de geolocalización.* Podemos solicitar en algún momento acceso o permiso a la información basada en la ubicación desde su dispositivo móvil para proporcionar servicios basados en la ubicación. Si desea cambiar nuestro acceso o permisos, puede hacerlo en la configuración de su dispositivo.
- *Notificaciones Push.* Podemos solicitar el envío de notificaciones push con respecto a su cuenta o la aplicación móvil. Si desea optar por no recibir este tipo de comunicaciones, puede desactivarlas en la configuración de su dispositivo.
## 2. ¿CÓMO USAMOS SU INFORMACIÓN? ##
**En resumen:** *Procesamos su información para fines basados en intereses legítimos, el cumplimiento de nuestro contrato con usted, el cumplimiento de nuestras obligaciones legales y/o su consentimiento.*
Usamos información personal recopilada a través de nuestros Sitios o Aplicaciones para una variedad de propósitos que se describen a continuación. Procesamos su información personal para estos fines a fin de celebrar o realizar un contrato con usted ("Contractual"), con su consentimiento ("Consentimiento"), y/o para cumplir con nuestras obligaciones legales ("Razones legales"). Indicamos los motivos de procesamiento específicos en los que confiamos junto a cada uno de los propósitos enumerados a continuación.
Usamos la información que recopilamos o recibimos:
- **Para facilitar la creación de la cuenta y el proceso de inicio de sesión** con su consentimiento. Si elige vincular su cuenta con nosotras/os a una cuenta de terceros \*(como su cuenta de Google o Telegram), usamos la información que nos permitió recopilar de esos terceros para facilitar la creación de la cuenta y el proceso de inicio de sesión.
- **Solicitud de comentarios**. Podemos utilizar su información para solicitar comentarios y para comunicarnos con usted sobre su uso de nuestros Sitios o Aplicaciones.
- **Para habilitar las comunicaciones de usuario a usuario** con su consentimiento. Podemos usar su información para permitir las comunicaciones de usuario a usuario con el consentimiento de cada usuario.
- **Para hacer cumplir nuestros términos, condiciones y políticas**.
- **Para responder a solicitudes legales y evitar daños** por razones legales. Si recibimos una citación u otra solicitud legal, es posible que tengamos que inspeccionar los datos que tenemos para determinar cómo responder.
## 3. ¿SU INFORMACIÓN SERÁ COMPARTIDA CON ALGUIEN? ##
**En resumen:** *Solo compartimos información con su consentimiento, para cumplir con las leyes o proteger sus derechos*
Solo compartimos y divulgamos su información en las siguientes situaciones:
- **De acuerdo con las leyes**. Podemos divulgar su información cuando se nos requiera legalmente para cumplir con la ley aplicable, las solicitudes gubernamentales, un procedimiento judicial, una orden judicial o un proceso legal, como por ejemplo en respuesta a una orden judicial o una citación judicial (incluso en respuesta a las autoridades públicas para cumplir con los requisitos de seguridad nacional o cumplimiento de la ley).
- **Intereses vitales y derechos legales**. Podemos divulgar su información cuando creemos que es necesario investigar, prevenir o tomar medidas con respecto a posibles violaciones de nuestras políticas, sospecha de fraude, situaciones que involucren amenazas potenciales a la seguridad de cualquier persona y actividades ilegales, o como evidencia en un litigio en el cual estamos involucrados.
- **Con su consentimiento**. Podemos divulgar su información personal para cualquier otro propósito con su consentimiento.
## 4. ¿USAMOS COOKIES Y OTRAS TECNOLOGÍAS DE SEGUIMIENTO? ##
**En resumen:** *Podemos utilizar cookies y otras tecnologías de seguimiento para recopilar y almacenar su información.*
Podemos usar cookies para acceder o almacenar información sobre el inicio de sesión de la cuenta y sus preferencias de usuario (como su idioma preferido).
## 5. ¿USAMOS GOOGLE MAPS? ##
**En resumen:** *Sí, utilizamos Google Maps con el fin de proporcionar un mejor servicio.*
Este sitio web, aplicación móvil o aplicación Telegram utiliza las API de Google Maps. Puede encontrar las Condiciones del servicio de las API de Google Maps [aquí](https://developers.google.com/maps/terms). Para comprender mejor la Política de privacidad de Google, consulte este [enlace](https://policies.google.com/privacy).
Al utilizar nuestra implementación de Maps API, usted acepta estar sujeto a los Términos de Servicio de Google. Usted acepta permitirnos obtener o almacenar en caché su ubicación. Puede revocar su consentimiento en cualquier momento. Usamos información sobre la ubicación junto con datos de otros proveedores de datos.
## 6. ¿CUÁNTO TIEMPO CONSERVAMOS SU INFORMACIÓN? ##
**En resumen:** *Conservamos su información el tiempo que sea necesario para cumplir con los fines descritos en esta política de privacidad, a menos que la ley así lo requiera.*
Solo conservaremos su información personal durante el tiempo que sea necesario para los fines establecidos en esta política de privacidad, a menos que la ley exija o permita un período de retención más largo (como impuestos, contabilidad u otros requisitos legales). Ningún propósito de esta política nos obligará a conservar su información personal por un período mayor al que el usuario tenga una cuenta con nosotras/os.
Cuando no tenemos una necesidad legítima continua de procesar su información personal, la borraremos o la anonimizamos, o, si esto no es posible (por ejemplo, porque su información personal ha sido almacenada en archivos de respaldo), almacenaremos de manera segura su información personal y aislarlo de cualquier procesamiento posterior hasta que la eliminación sea posible.
## 7. ¿CÓMO MANTENEMOS SU INFORMACIÓN SEGURA? ##
**En resumen:** *Nuestro objetivo es proteger su información personal a través de un sistema de medidas de seguridad técnicas y organizativas.*
Hemos implementado medidas de seguridad organizacionales y técnicas adecuadas diseñadas para proteger la seguridad de cualquier información personal que procesamos. Sin embargo, recuerde que no podemos garantizar que Internet sea 100% seguro. Aunque haremos nuestro mejor esfuerzo para proteger su información personal, la transmisión de información personal hacia y desde nuestros Sitios o Aplicaciones es bajo su propio riesgo. Solo debe acceder a los servicios dentro de un entorno seguro.
## 8. ¿RECOPILAMOS INFORMACIÓN DE MENORES DE EDAD? ##
**En resumen:** *No recopilamos deliberadamente ni comercializamos datos de niños menores de 18 años.*
No solicitamos intencionalmente ni comercializamos datos de niños menores de 18 años. Al utilizar los Sitios o Aplicaciones, usted declara que tiene al menos 18 años o que es el padre o tutor de dicho menor y acepta el uso de los Sitios o Aplicaciones por parte de dicho menor dependiente. Si descubrimos que se ha recopilado información personal de usuarios menores de 18 años, desactivaremos la cuenta y tomaremos medidas razonables para eliminar dichos datos de inmediato de nuestros registros. Si toma conocimiento de cualquier información que hayamos recopilado de niños menores de 18 años, contáctenos a info@comunes.org.
## 9. ¿CUÁLES SON SUS DERECHOS DE PRIVACIDAD? ##
**En resumen:** *En algunas regiones, como el Unión Europea, tiene derechos que le permiten un mayor acceso y control sobre su información personal. Puede revisar, cambiar o cancelar su cuenta en cualquier momento.*
En algunas regiones (como la Unión Europea), usted tiene ciertos derechos bajo las leyes de protección de datos aplicables. Estos pueden incluir el derecho (i) de solicitar acceso y obtener una copia de su información personal, (ii) solicitar una rectificación o cancelación; (iii) restringir el procesamiento de su información personal; y (iv) si corresponde, a la portabilidad de datos. En determinadas circunstancias, también puede tener derecho a oponerse al procesamiento de su información personal. Para realizar dicha solicitud, utilice los datos de contacto que se proporcionan a continuación. Consideraremos y actuaremos en cualquier solicitud de acuerdo con las leyes de protección de datos aplicables.
Si confiamos en su consentimiento para procesar su información personal, tiene derecho a retirar su consentimiento en cualquier momento. Sin embargo, tenga en cuenta que esto no afectará la legalidad del procesamiento antes de su retirada.
Si usted reside en la Unión Europea y considera que estamos procesando ilegalmente su información personal, también tiene derecho a presentar una queja ante la autoridad de supervisión de protección de datos local. Puede encontrar sus datos de contacto aquí: [http://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm](http://ec.europa.eu/justice/data-protection/bodies/authorities/index_en.htm)
### Información de la cuenta ###
Si en algún momento desea revisar o cambiar la información en su cuenta o cancelar su cuenta, puede:
- Inicie sesión en la configuración de su cuenta y actualice su cuenta de usuario.
Tras su solicitud para cancelar su cuenta, desactivaremos o eliminaremos su cuenta y la información de nuestras bases de datos activas. Sin embargo, parte de la información se puede conservar en nuestros archivos para evitar fraudes, solucionar problemas, ayudar con cualquier investigación, hacer cumplir nuestros Términos de uso y/o cumplir con los requisitos legales.
**Cookies y tecnologías similares:** La mayoría de los navegadores web están configurados para aceptar cookies por defecto. Si lo prefiere, generalmente puede elegir configurar su navegador para que elimine las cookies y rechace las cookies. Si elige eliminar las cookies o rechazar las cookies, esto podría afectar ciertas funciones o servicios de nuestros sitios o aplicaciones.
**Optar por no recibir notificaciones por correo electrónico:** Puede darse de baja de nuestros correos electrónicos de notificación en cualquier momento haciendo clic en el enlace para darse de baja en los correos electrónicos que le enviamos o poniéndose en contacto con nosotras/os utilizando los detalles que se proporcionan a continuación. A continuación, se le eliminará de estos correos electrónicos; sin embargo, aún así le enviaremos correos electrónicos relacionados con el servicio que son necesarios para la administración y el uso de su cuenta. Para optar por no participar, usted puede:
- Tener en cuenta sus preferencias cuando registra una cuenta en el sitio.
- Acceder a la configuración de tu cuenta y actualizar tus preferencias.
## 10. ¿LOS RESIDENTES DE CALIFORNIA TIENEN DERECHOS DE PRIVACIDAD ESPECÍFICOS? ##
**En resumen:** *Sí, si usted es residente de California, se le otorgan derechos específicos con respecto al acceso a su información personal.*
La Sección 1798.83 del Código Civil de California, también conocida como la ley "Shine The Light", permite a nuestros usuarios que son residentes de California solicitar y obtener de nosotras/os, una vez al año y sin cargo, información sobre categorías de información personal (si corresponde) que divulgado a terceros para fines de marketing directo y los nombres y direcciones de todos los terceros con quienes compartimos información personal en el año calendario inmediatamente anterior. Si usted es residente de California y desea realizar dicha solicitud, envíe su solicitud por escrito a nosotras/os utilizando la información de contacto que se proporciona a continuación.
Si eres menor de 18 años, resides en California y tienes una cuenta registrada en los Sitios o Aplicaciones, tienes el derecho de solicitar la eliminación de datos no deseados que publiques en los Sitios o Aplicaciones. Para solicitar la eliminación de dichos datos, contáctenos utilizando la información de contacto que se proporciona a continuación, e incluya la dirección de correo electrónico asociada a su cuenta y una declaración de que reside en California. Nos aseguraremos de que los datos no se muestren públicamente en los Sitios o Aplicaciones, pero tenga en cuenta que es posible que los datos no se eliminen completa o completamente de nuestros sistemas.
## 11. ¿HACEMOS ACTUALIZACIONES DE ESTA POLÍTICA? ##
**En resumen:** *Sí, actualizaremos esta política según sea necesario para cumplir con las leyes pertinentes.*
Podemos actualizar esta política de privacidad de vez en cuando. La versión actualizada se indicará con una fecha actualizada "Revisada" y la versión actualizada entrará en vigencia tan pronto como sea accesible. Si realizamos cambios sustanciales a esta política de privacidad, podemos notificarlo publicando de manera prominente un aviso de dichos cambios o enviándole directamente una notificación. Le recomendamos que revise esta política de privacidad con frecuencia para recibir información sobre cómo protegemos su información.
## 12. ¿CÓMO PUEDE CONTACTARNOS SOBRE ESTA POLÍTICA? ##
Si tiene preguntas o comentarios sobre esta política, puede enviarnos un correo electrónico a info@comunes.org o por correo postal a:
ASOCIACIÓN COMUNES
ALICANTE
Si tiene más preguntas o comentarios sobre nosotras/os o nuestras políticas, envíenos un correo electrónico a info@comunes.org o por correo postal a:
ASOCIACIÓN COMUNES
ALICANTE

32
lib/fileUtils.dart Normal file
View file

@ -0,0 +1,32 @@
import 'dart:async';
import 'package:flutter/services.dart' show rootBundle;
import 'package:meta/meta.dart';
final esRegExp = new RegExp("^es-");
String getFallbackLang(String lang) {
if (lang == 'ast' || lang == 'gl' || lang == 'eu' ||
lang == 'es' || lang == 'ca' || (esRegExp).allMatches(lang).length > 0) {
return 'es';
}
return 'en';
}
Future<String> getFileNameOfLang({@required String dir,@required String fileName,@required String ext,@required String lang}) async {
String base = '$dir/$fileName';
String fallback = getFallbackLang(lang);
String file = '${base}-${lang}.${ext}';
if (await assetNotExists(file)) {
file = '${base}-${fallback}.${ext}';
if (await assetNotExists(file)) {
file = '${base}.${ext}';
}
}
return file;
}
// https://github.com/flutter/flutter/issues/15325
Future<bool> assetNotExists(String asset) {
print('Does not exists $asset ?');
return rootBundle.load(asset).then((_) => false).catchError((err, stack) { print (err); print(stack); return true;});
}

View file

@ -6,17 +6,16 @@ import 'fireMarkerIcon.dart';
import 'fireMarkType.dart';
class FireMarker extends Marker {
FireMarker(location, type,
[AnchorPos anchor = AnchorPos.center, Anchor anchorOverride])
[onTap = null, AnchorPos anchor = AnchorPos.center, Anchor anchorOverride])
: super(
width: 80.0,
height: 80.0,
point: new LatLng(location.lat, location.lon),
builder: (ctx) => new Container(
child: new GestureDetector(
child: new FireMarkerIcon(type), onTap: () {
print('marker pressed');
})
child: new FireMarkerIcon(type), onTap: onTap)
),
anchor: anchor,
anchorOverride: anchorOverride ?? type == FireMarkType.position

View file

@ -12,6 +12,7 @@ import 'models/appState.dart';
import 'redux/actions.dart';
import 'sandbox.dart';
import 'theme.dart';
import 'privacyPage.dart';
class FiresApp extends StatelessWidget {
static final WidgetBuilder introWidget = (context) => new IntroPage();
@ -20,6 +21,7 @@ class FiresApp extends StatelessWidget {
final Map routes = <String, WidgetBuilder>{
IntroPage.routeName: introWidget,
HomePage.routeName: continueWidget,
PrivacyPage.routeName: (BuildContext context) => new PrivacyPage(context),
ActiveFiresPage.routeName: (BuildContext context) => new ActiveFiresPage(),
Sandbox.routeName: (BuildContext context) => new Sandbox(),
};

View file

@ -47,6 +47,7 @@ class S implements WidgetsLocalizations {
String get isYourUbicationEnabled => "I cannot get your current location. It's your ubication enabled?";
String get notPermsUbication => "We don't have permission to get your location";
String get notifyAFire => "Notify a fire";
String get privacyPolicy => "Privacy Policy";
String get supportThisInitiative => "Support this initiative";
String get toDeleteThisPlace => "Slide horizontally to delete this place";
String get toFiresNotifications => "Subscribe to fires notifications";
@ -120,6 +121,8 @@ class es extends S {
@override
String get aF3wSeconds => "unos segundos";
@override
String get privacyPolicy => "Política de Privacidad";
@override
String get activeFires => "Fuegos activos";
@override
String get aMonth => "un mes";

View file

@ -18,7 +18,7 @@ class GlobalFiresBottomStats extends StatefulWidget {
class _GlobalFiresBottomStatsState extends State<GlobalFiresBottomStats> {
String lastCheck;
int activeFires = 0;
final firesApiUrl = Injector.getInjector().get(String, "firesApiUrl");
final firesApiUrl = Injector.getInjector().get<String>(key: "firesApiUrl");
@override
void initState() {

View file

@ -47,7 +47,7 @@ Future<YourLocation> getUserLocation(
Future<String> getReverseLocation(YourLocation loc,
[bool external = false]) async {
final coordinates = new Coordinates(loc.lat, loc.lon);
var geoCoder = external ? Geocoder.google(Injector.getInjector().get(String, "gmapKey")) : Geocoder.local;
var geoCoder = external ? Geocoder.google(Injector.getInjector().get<String>(key: "gmapKey")) : Geocoder.local;
var addresses = await geoCoder.findAddressesFromCoordinates(coordinates);
var first = addresses.first;
print("${first.featureName} : ${first.addressLine}");

View file

@ -21,7 +21,7 @@ Future<Map<String, dynamic>> loadSecrets() async {
void mainCommon(List<Middleware<AppState>> otherMiddleware) {
final injector = Injector.getInjector();
injector.map(FiresApi, (i) => new FiresApi(), isSingleton: true);
injector.map<FiresApi>((i) => new FiresApi(), isSingleton: true);
loadSecrets().then((secrets) {
final store = new Store<AppState>(appStateReducer,
initialState: new AppState(
@ -31,9 +31,9 @@ void mainCommon(List<Middleware<AppState>> otherMiddleware) {
middleware: List.from(otherMiddleware)
..add(fetchYourLocationsMiddleware));
injector.map(String, (i) => store.state.firesApiUrl, key: "firesApiUrl");
injector.map(String, (i) => store.state.firesApiKey, key: "firesApiKey");
injector.map(String, (i) => store.state.gmapKey, key: "gmapKey");
injector.map<String>((i) => store.state.firesApiUrl, key: "firesApiUrl");
injector.map<String>((i) => store.state.firesApiKey, key: "firesApiKey");
injector.map<String>((i) => store.state.gmapKey, key: "gmapKey");
VoidCallback mainFn = () {
loadYourLocations().then((yl) {

View file

@ -6,6 +6,7 @@ import 'activeFires.dart';
import 'globals.dart' as globals;
import 'generated/i18n.dart';
import 'package:comunes_flutter/comunes_flutter.dart';
import 'privacyPage.dart';
class MainDrawer extends Drawer {
MainDrawer(BuildContext context, {key})
@ -61,6 +62,15 @@ Widget mainDrawer(BuildContext context) {
},
),
new Divider(),
new ListTile(
leading: const Icon(Icons.lock),
title: new Text(S.of(context).privacyPolicy),
onTap: () {
// Then close the drawer
Navigator.pop(context);
Navigator.pushNamed(context, PrivacyPage.routeName);
},
),
new ListTile(
leading: const Icon(Icons.favorite),
title: new Text(S.of(context).supportThisInitiative),

42
lib/markdownPage.dart Normal file
View file

@ -0,0 +1,42 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:flutter_markdown/flutter_markdown.dart';
import 'globals.dart' as globals;
abstract class MarkdownPage extends StatefulWidget {
final String title;
final Future<String> file;
MarkdownPage({this.title, this.file});
@override
_MarkdownPageState createState() =>
_MarkdownPageState(title: this.title, file: this.file);
}
class _MarkdownPageState extends State<MarkdownPage> {
final String title;
final Future<String> file;
String pageData = "";
_MarkdownPageState({this.title, this.file});
@override
Widget build(BuildContext context) {
this.file.then((fileSync) {
rootBundle
.loadString(fileSync, cache: !globals.isDevelopment)
.then((pageData) {
setState(() {
this.pageData = pageData;
});
});
});
return new Scaffold(
appBar: new SliverAppBar(title: new Text(title ?? '')),
body: new Markdown(data: pageData));
}
}

View file

@ -9,7 +9,7 @@ import 'package:flutter_simple_dependency_injection/injector.dart';
Future<YourLocation> openPlacesDialog(GlobalKey<ScaffoldState> sc) async {
Mode _mode = Mode.overlay;
String gmapKey = Injector.getInjector().get(String, "gmapKey");
String gmapKey = Injector.getInjector().get<String>(key: "gmapKey");
GoogleMapsPlaces _places = new GoogleMapsPlaces(gmapKey);
Prediction p = await showGooglePlacesAutocomplete(
context: sc.currentContext,

18
lib/privacyPage.dart Normal file
View file

@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
import 'fileUtils.dart';
import 'generated/i18n.dart';
import 'markdownPage.dart';
class PrivacyPage extends MarkdownPage {
static const String routeName = '/privacy';
PrivacyPage(context)
: super(
title: S.of(context).privacyPolicy,
file: getFileNameOfLang(
dir: 'assets/pages',
fileName: 'privacy',
ext: 'md',
lang: Localizations.localeOf(context).languageCode));
}

View file

@ -18,7 +18,7 @@ import 'actions.dart';
// Middleware do not return any values themselves. They simply forward
// actions on to the Reducer or swallow actions in some special cases.
FiresApi api = Injector.getInjector().get<FiresApi>(FiresApi);
FiresApi api = Injector.getInjector().get<FiresApi>();
void fetchYourLocationsMiddleware(
Store<AppState> store, action, NextDispatcher next) {

View file

@ -20,7 +20,21 @@ class Sandbox extends StatelessWidget {
decoration: new InputDecoration(),
onSubmitted: (todoText) {},
)),
body: new Text("Sandbox"),
);
body: new RaisedButton(
child: new Text('Press'),
onPressed: () {
showDialog(
context: context,
builder: (context) {
return new SimpleDialog(
title: new Text('title'),
children: <Widget>[
new Padding(
padding: const EdgeInsets.only(left: 16.0),
child: new Text('hhh'),
),
]);
});
}));
}
}

View file

@ -318,7 +318,7 @@ class _YourLocationMapState extends State<YourLocationMap> {
});
fires.forEach((fire) {
var loc = new BasicLocation(lat: fire['lat'], lon: fire['lon']);
markers.add(FireMarker(loc, FireMarkType.fire));
markers.add(FireMarker(loc, FireMarkType.fire, () => print('marker pressed')));
markers.add(FireMarker(loc, FireMarkType.pixel));
});
return markers;

View file

@ -16,6 +16,7 @@ dependencies:
just_debounce_it: "^1.0.4"
flutter_simple_dependency_injection: "^0.0.2"
sentry: "^2.0.2"
flutter_markdown: "^0.1.5"
# net
http: "^0.11.3+16"
@ -82,6 +83,8 @@ flutter:
assets:
- assets/private-settings.json
- assets/pages/privacy-en.md
- assets/pages/privacy-es.md
- images/logo-200.png
- images/fire-marker-l.png
- images/fire-marker-m.png

View file

@ -44,5 +44,6 @@
"somethingAgo": "$something ago",
"inSomething": "in $something",
"SAVE": "SAVE",
"CANCEL": "CANCEL"
"CANCEL": "CANCEL",
"privacyPolicy": "Privacy Policy"
}

View file

@ -44,5 +44,6 @@
"somethingAgo": "hace $something",
"inSomething": "en $something",
"SAVE": "GUARDAR",
"CANCEL": "CANCELAR"
"CANCEL": "CANCELAR",
"privacyPolicy": "Política de Privacidad"
}

30
test/file_test.dart Normal file
View file

@ -0,0 +1,30 @@
import 'package:test/test.dart';
import 'package:fires_flutter/fileUtils.dart';
void main() {
test('test es-ES fallback', () {
String answer = getFallbackLang('es-ES');
expect(answer, 'es');
});
test('test en-GB fallback', () {
String answer = getFallbackLang('en-GB');
expect(answer, 'en');
});
test('test gl fallback', () {
String answer = getFallbackLang('gl');
expect(answer, 'es');
});
test('test fr fallback', () {
String answer = getFallbackLang('fr');
expect(answer, 'en');
});
test('test privacy English md page', () async {
String answer = await getFileNameOfLang(dir: 'assets/pages', fileName: 'privacy', ext: 'md', lang: 'en');
expect(answer, 'assets/pages/privacy-en.md');
});
}